2014-06-22 100 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在函數調用代表在列表中的矩陣。