假设我有一个数据框:
Col1 Col2 Col3 Col4 Col5 Col6
Row1 1 0 20 4 8 23
Row2 0 1 3 61 2 1
Row3 1 1 2 4 3 54
我想将此数据帧排序为多个数据帧,因为我也想要列信息。
Col6 Col3 Col5 Col4 Col1 Col2
Row1 23 20 8 4 1 0
Col4 Col3 Col5 Col2 Col6 Col1
Row2 61 3 2 1 1 0
Col6 Col4 Col5 Col3 Col1 Col2
Row3 54 4 3 2 1 1
答案 0 :(得分:0)
正如Eric Lecoutre在评论中指出的那样,您可以在这种情况下使用lapply()
。有不同的方法可以做到这一点,我举两个例子。
使用函数order()
在两个示例中完成排序。如何通过一个例子最简单地理解它的工作原理:
x <- c(3, 4, 1, 2)
x[order(x)]
## [1] 1 2 3 4
x[order(x, decreasing = TRUE)]
## [1] 4 3 2 1
因此,order()
不返回有序向量,而是返回可用于对向量进行排序的索引。
现在解决您的实际问题。您可以按如下方式应用行指数:
lapply(1:nrow(df), function(row) df[row, order(df[row, ], decreasing = TRUE)])
或者您可以将数据框拆分为一行数据框并应用于该列表:
lapply(split(df, 1:nrow(df)), function(row) row[, order(row, decreasing = TRUE)])