在* apply

时间:2018-07-20 07:18:42

标签: r r-base

我确定我在基本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是不现实的?

0 个答案:

没有答案
相关问题