2

考虑以下示例(向量中的值是目标练习结果,我正在尝试按射击分数自动排序)。我们生成三个向量。我们根据列对列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)

out2丢失时附加了行名out3。唯一的区别是我使用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

如果我理解你的例子,从你out2out3你正在独立地对每一列进行排序——这意味着第 1 行的值可能并不全部来自从 shooter1 生成的数据。因此,行名被删除是有道理的,因为行名是观察的名称,并且您不再将来自一个观察的数据保留在一行上。

于 2010-11-06T20:39:37.373 回答