【发布时间】:2017-11-27 15:19:15
【问题描述】:
我正在尝试对一些旧代码中的混乱循环进行矢量化处理。
假设我有一个列表 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
有没有一种干净的方法来提取索引indices1 的matrix1 列,即matrix1[,indices1],并将每个列向量分配给相应的列表元素 在list1,即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
使用循环或应用类型的函数肯定可以做到这一点,但我希望有更高效的东西。感谢您的任何建议!
【问题讨论】:
标签: r vector vectorization