将矩阵列指定为列表的元素

时间:2017-06-24 00:44:22

标签: r vector vectorization

我试图在一些旧代码中对一个凌乱的循环进行矢量化。

我们说我有一个列表list1,一个矩阵mat1和一个索引ind1的矢量,例如:

list1 <- list(2:4, 1:3, 11:19, 36:42)
list1
## [[1]]
## [1] 2 3 4
## 
## [[2]]
## [1] 1 2 3
## 
## [[3]]
## [1] 11 12 13 14 15 16 17 18 19
## 
## [[4]]
## [1] 36 37 38 39 40 41 42

matrix1 <- matrix(1:16, nrow=4, ncol=4)
matrix1
##      [,1] [,2] [,3] [,4]
## [1,]    1    5    9   13
## [2,]    2    6   10   14
## [3,]    3    7   11   15
## [4,]    4    8   12   16

indices1 <- 1:2

是否有一种干净的方式来提取matrix1索引indices1的列,即matrix1[,indices1],并将每个列向量分配给相应的list1中的> list element ,即list1[indices1]

...所有具有所需的输出

list1
## [[1]]
## [1] 1 2 3 4
## 
## [[2]]
## [1] 5 6 7 8 
## 
## [[3]]
## [1] 11 12 13 14 15 16 17 18 19
## 
## [[4]]
## [1] 36 37 38 39 40 41 42

使用循环或应用类型函数肯定是可行的,但我希望能提高效率。谢谢你的任何建议!

1 个答案:

答案 0 :(得分:1)

list1[indices1] <- data.frame(matrix1[,indices1])

我不确定它是否足够有效。它似乎意味着你想要做什么。