我试图在一些旧代码中对一个凌乱的循环进行矢量化。
我们说我有一个列表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
使用循环或应用类型函数肯定是可行的,但我希望能提高效率。谢谢你的任何建议!
答案 0 :(得分:1)
list1[indices1] <- data.frame(matrix1[,indices1])
我不确定它是否足够有效。它似乎意味着你想要做什么。