多列R矩阵(超过100列)

时间:2015-12-28 22:41:59

标签: r matrix

我的矩阵超过 100列。我想根据第一列,然后是第二列,......等排序矩阵。 我知道对于少量的col,我可以使用order函数这样做:

test2 <- test[order(test[,1],test[,2],test[,3],test[,4], test[,5], test[,6]),]

如果我有100多个col并且我不需要指定1到100 col,是否有一种有效的方法可以做到这一点。也许使用循环或什么?

非常感谢! 伯尼斯

1 个答案:

答案 0 :(得分:4)

假设您的矩阵看起来像这样:

@"commentsArray"

当我们想要向函数传递任意数量的参数时,set.seed(47) x = matrix(rpois(10 * 20, lambda = 1), nrow = 10) 是一个不错的选择;它允许我们将一个参数列表传递给函数。

对于do.call,我们要传递的每个参数都是矩阵的一列,因此我们需要列出矩阵的列。幸运的是,数据框基本上是这样的,因此我们可以强制使用order后跟as.data.frame

as.list

这为我们提供了一种可以通常方式应用的行排序:

ordering = do.call(what = order, args = as.list(as.data.frame(x)))

注意:以上代码将按所有列排序,优先级为早期列。要通过仅按某些列排序,请在x[ordering, ] 定义中对矩阵进行子集化,然后按上述步骤进行。

ordering