У меня есть список, содержащий 3 вектора, например:
> test_list
[[1]]
[1] "a" "b"
[[2]]
[1] "c" "d" "e"
[[3]]
[1] "f" "g"
Я хочу получить доступ к элементам этих векторов, используя массив, содержащий индексы векторов, например:
> indices
[,1] [,2] [,3]
[1,] 1 3 2
[2,] 2 2 2
This желаемый результат:
[,1] [,2] [,3]
[1,] "a" "e" "g"
[2,] "b" "d" "g"
Я нашел следующий способ сделать это:
test_list <- list(c("a", "b"), c("c", "d", "e"), c("f", "g"))
indices <- matrix(c(1, 3, 2, 2, 2, 2), nrow = 2, ncol = 3, byrow = TRUE)
t(apply(indices, 1, function(row){mapply(`[[`, test_list, row)}))
Есть ли более чистый, более идиоматический c способ?