Используйте `[` in *apply
Я уверен, что я упускаю что-то очевидное в базе 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
?