我确定我在基本R
本身中缺少明显的东西。我想根据存储在列表中的索引按矩阵的列对子集进行分组。
m <- matrix(1:50L, ncol = 5)
l <- lapply(0:3, `+`, 1:2)
> l
[[1]]
[1] 1 2
[[2]]
[1] 2 3
[[3]]
[1] 3 4
[[4]]
[1] 4 5
我想要一个矩阵列表,如下所示-
list(m[, l[[1]]], m[, l[[2]]], m[, l[[3]]], m[, l[[4]]])
我尝试了lapply(l, '[', m)
,但是显然不起作用,因为'['
像矢量一样在m
上工作。如何使其像矩阵一样在m
上工作并指定索引2?我也尝试过apply(X = do.call(rbind, l), MARGIN = 1, FUN = '[', m)
,但是那也不起作用。
我知道我可以如下定义函数f
;但这感觉很骇人。
f <- function(ind){m[, ind]}
lapply(l, f)
有什么聪明的方法可以避免定义f
还是我不切实际地使用f
是不现实的?