Sorting 使用“应用”时消失行名称

Sorting 使用“应用”时消失行名称,sorting,r,apply,Sorting,R,Apply,考虑下面的例子(向量中的值是目标练习的结果,我试图通过射击分数自动排序)。我们生成三个向量。我们根据out.tot列对列1:20中的值进行升序排序,并对行进行降序排序 # 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 =

考虑下面的例子(向量中的值是目标练习的结果,我试图通过射击分数自动排序)。我们生成三个向量。我们根据
out.tot
列对列
1:20
中的值进行升序排序,并对行进行降序排序

# 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
你是在对每一列进行独立排序,这意味着第1行上的值可能并不都来自shooter1生成的数据。因此,将行名作为观察值的名称放入行中是有意义的,并且您不再将一个观察值的数据保留在一行中。

如果我理解您的示例,从
out2
out3
您将对每一列进行独立排序,这意味着第1行上的值可能并非全部来自shooter1生成的数据。因此,将行名作为观察值的名称放入行中是有意义的,并且您不再将一个观察值的数据保留在一行中。

您的问题在于转置。转置时,它会删除行名并转换为矩阵。我不认为是这样。如果我运行代码,row.name仍然存在out.sort.Your的问题是转置。转置时,它会删除行名并转换为矩阵。我不认为是这样。如果我运行代码,row.name仍然存在,用于out.sort。
> 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