Подмножество массива для пар индексов в r

Хотя я искал, я не смог найти однозначного ответа на свой вопрос. Предположим, у меня есть массив:

    vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
result <- array(c(vector1,vector2),dim = c(3,3,2))

Теперь я хочу разбить этот массив на подмножество таким образом, чтобы получить элементы из определенных строк и столбцов. Например:

result[1,3,1:2]
result[3,1,1:2]

так как у меня много индексов, они расценены в

rowind=c(1,3)
colind=c(3,1)

Для подмножества я попытался использовать таким образом векторы строк и столбцов.

dim(result[rowind,colind,1:2])

[1] 2 2 2

Это не то, что я хочу. Я хочу, чтобы на выходе было одно значение для каждой пары индексов. Фактически, я хочу, чтобы моя извлеченная матрица имела размер 2x2 (а не 2x2x2). Чтобы вы знали, я пробовал "цикл". Но проблема в том, что у меня много массивов, и это займет очень много времени.

result_c=matrix(NA,nrow=2,ncol=2)

for (i in 1:2){
  result_c[i,]=result[rowind[i],colind[i],] 
}

Спасибо за вашу помощь.

Разве это не дубликат stackoverflow.com/questions/41384466/…

Montgomery Clift 30.11.2018 10:18
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
2
1
808
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Если я вас правильно понял, мы можем использовать Map

Map(function(i, j) result[i, j, 1:2], rowind, colind)
#[[1]]
#[1] 13 13
#
#[[2]]
#[1] 3 3

Или упрощенный как matrix с использованием mapply

mapply(function(i, j) result[i, j, 1:2], rowind, colind)
#     [,1] [,2]
#[1,]   13    3
#[2,]   13    3

Map - это оболочка для mapply, которая не упрощает результаты, тем самым создавая list (а не matrix).

Мы могли бы передать matrix индексов для подмножества данных

result[cbind(rep(rowind, each = 2), rep(colind, each = 2), 1:2)]
#[1] 13 13  3  3

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