【发布时间】:2018-11-26 12:45:46
【问题描述】:
我有以下5x2 矩阵列表:
l <- list(a=matrix(rnorm(10),nrow=5,ncol=2),
b=matrix(rnorm(10),nrow=5,ncol=2),
c=matrix(rnorm(10),nrow=5,ncol=2))
例如,此列表的第一个元素如下所示:
$a
[,1] [,2]
[1,] -0.4988268 1.9881333
[2,] -0.2979064 1.5921169
[3,] -1.3783522 -1.4149601
[4,] 0.2205115 0.2029210
[5,] 1.2721645 0.2861253
我想获取这个列表并使用来自向量 v 的信息创建一个新的 5x2 矩阵:
v <- c("a","a","b","c","b")
这个向量是一个指示向量,它包含关于如何构造这个新矩阵的信息。即从列表元素a 中取出第1 行,从列表元素a 中取出第2 行,以此类推。
可以通过for-loop 来实现,但是,对于我的应用程序来说,这不够高效,我觉得可能有一个更优雅的解决方案。我的做法:
goal <- matrix(nrow=5,ncol=2)
for(i in 1:length(v)){
goal[i,] <- l[[v[i]]][i,]
}
goal
[,1] [,2]
[1,] -0.4988268 1.98813326
[2,] -0.2979064 1.59211686
[3,] 0.7715907 0.16776669
[4,] 0.2690278 0.02542766
[5,] 1.7865093 0.46361239
谢谢!
【问题讨论】: