2014-06-22 32 views
2

我有一个包含4个矩阵的列表,每列有3列7行21个随机数。对第一列的矩阵排序

我想使用lapply函数创建新的列表,其中每个矩阵按第一列排序。

我想:

#example data 
set.seed(1) 
list.a <- replicate(4, list(matrix(sample(1:99, 21), nrow=7))) 

ordered <- order(list.a[,1]) 

lapply(list.a, function(x){[ordered,]}) 

但在第一步将R给我错误"incorrect number of dimensions"。不知道该怎么做。它可以与一个矩阵协同工作。

请帮帮我。谢谢!

+0

您需要为列表中的每个矩阵查找“order”。这个'lapply(list.a,function(x)x [order(x [,1]),])'工作吗? – user20650

+0

是的,它的作品!非常感谢你! – user3765574

+3

@ user20650国际海事组织你应该这样做,并获得提供正确答案的代表。 –

回答

2

你几乎在那里 - 但你需要遍历列表重新排列每个矩阵。

它更容易做,这是一个lapply声明

lapply(list.a, function(x) x[order(x[,1]),]) 

注意x在函数调用代表在列表中的矩阵。