簡體   English   中英

從R列表中的矩陣中提取行

[英]Extract row from a matrix in a list in R

我正在嘗試從R列表中的所有矩陣中提取行。除了循環之外,還有一種簡單的方法嗎? 例如

set.seed(123)
list1 <- list(replicate(4,rnorm(2)))
rep(list1,3)

此代碼生成以下列表:

[[1]]
           [,1]       [,2]      [,3]       [,4]
[1,] -0.5604756 1.55870831 0.1292877  0.4609162
[2,] -0.2301775 0.07050839 1.7150650 -1.2650612

[[2]]
           [,1]       [,2]      [,3]       [,4]
[1,] -0.5604756 1.55870831 0.1292877  0.4609162
[2,] -0.2301775 0.07050839 1.7150650 -1.2650612

[[3]]
           [,1]       [,2]      [,3]       [,4]
[1,] -0.5604756 1.55870831 0.1292877  0.4609162
[2,] -0.2301775 0.07050839 1.7150650 -1.2650612

現在,我要提取此列表中所有矩陣的第二行,並將其存儲在另一個矩陣或列表中。 有沒有辦法做到這一點而不循環?

謝謝

還是這樣?

set.seed(123)
list1 <- list(replicate(4,rnorm(2)))
l<-rep(list1,3)
lapply(l,function(x) x[2,])
matrix(unlist(lapply(x,function (x) { x[2,]})),nrow=length(x), byrow=T)

           [,1]      [,2]       [,3]       [,4]
[1,] -0.2372892 0.8751748 -0.5452381 -0.1484494
[2,] -0.2372892 0.8751748 -0.5452381 -0.1484494
[3,] -0.2372892 0.8751748 -0.5452381 -0.1484494

這將用lapply提取行,並將它們與rbind放在一起。

x = rep(list1,3)
do.call( rbind, lapply(x,'[',2,) )

plyr軟件包是另一種選擇

library(plyr)
laply(x,function(y) y[2,])

?"["幫助頁面很有啟發性。 閱讀后,我意識到下面的簡短代碼也可以使用。

laply(x,'[',2,TRUE)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM