Используйте `[` 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?

0 ответов

Другие вопросы по тегам