2

次の例を考えてみましょう(ベクトルの値はターゲットの練習結果であり、射撃スコアで自動的に並べ替えようとしています)。3つのベクトルを生成します。列の値を1:20昇順で並べ替え、行を列に基づいて降順で並べ替えますout.tot

# Generate data
shooter1 <- round(runif(n = 20, min = 1, max = 10))
shooter2 <- round(runif(n = 20, min = 1, max = 10))
shooter3 <- round(runif(n = 20, min = 1, max = 10))
out <- data.frame(t(data.frame(shooter1, shooter2, shooter3)))
colnames(out) <- 1:ncol(out)

out.sort <- t(apply(out, 1, sort, na.last = FALSE))
out.tot <- apply(out , 1, sum)
colnames(out.sort) <- 1:ncol(out.sort)
out2 <- cbind(out.sort, out.tot)

out3 <- apply(out2, 2, sort, decreasing = TRUE, na.last = FALSE)

out2out3行名が失われている間に添付されています。唯一の違いは、私が使用MARGIN = 2したことです。これはおそらく原因です(列ごとに取り込まれるため)。行を手動で照合することはできますが、行名がout3消えないようにする方法はありますか?

> out2
         1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 out.tot
shooter1 1 2 2 3 3 3 4 5 5  5  6  6  6  6  6  7  8  9  9 10     106
shooter2 1 3 3 3 3 4 4 4 5  5  5  5  5  6  7  8  8  9  9 10     107
shooter3 1 1 2 2 2 3 3 4 5  5  5  6  6  6  6  7  8  8  8  9      97

> out3
     1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 out.tot
[1,] 1 3 3 3 3 4 4 5 5  5  6  6  6  6  7  8  8  9  9 10     107
[2,] 1 2 2 3 3 3 4 4 5  5  5  6  6  6  6  7  8  9  9 10     106
[3,] 1 1 2 2 2 3 3 4 5  5  5  5  5  6  6  7  8  8  8  9      97
4

1 に答える 1

0

私があなたの例を理解している場合、あなたに行くと、各列が個別に並べ替えout2られout3ます。つまり、行1の値は、すべてshooter1から生成されたデータからのものではない可能性があります。その場合、行名がオブザベーションの名前であるのと同じくらい行名がドロップされ、1つの行の1つのオブザベーションからのデータを保持しなくなることは理にかなっています。

于 2010-11-06T20:39:37.373 に答える