Задан массив позиций для каждой строки во фрейме данных. Получить эти элементы наиболее эффективным способом, не используя функции apply.
Вот пример, потому что я ужасно объясняю. Учитывая эту матрицу (или фрейм данных):
A = matrix(1:9, nrow = 3, ncol = 3)
> A
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
Извлечь следующие элементы из каждого столбца: 1, 3, 3
Это означает, что я хочу получить 1, 8 и 9. первый, третий и третий элементы каждой строки.
Я ожидаю, что A [, c (1,3,3)] справится с задачей. Но, похоже, мне нужно обернуть это в функцию diag.
diag(A[, c(1,3,3)])
Это похоже на убийство мухи с помощью ядерного оружия. Это крайне неэффективно. Я знаю, что должен быть простой способ сделать это (без использования apply или любого из его семейства). Заранее спасибо!