В массиве в R, как мы можем провести вычитание в каждом элементе массива? - PullRequest
0 голосов
/ 31 мая 2018

В настоящее время у меня есть массив, который:

vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
new.array <- array(c(vector1,vector2),dim = c(3,3,100))
print(new.array)
, , 1

     [,1] [,2] [,3]
[1,]    5   10   13
[2,]    9   11   14
[3,]    3   12   15

, , 2

     [,1] [,2] [,3]
[1,]    5   10   13
[2,]    9   11   14
[3,]    3   12   15
...

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

, , 1

     [,1] [,2] [,3]
[1,]   -6    1    1

, , 2

     [,1] [,2] [,3]
[1,]   -6    1    1
...

Спасибо.

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Это будет сделано:

new.array[3, , , drop = FALSE] - new.array[2, , , drop = FALSE]

drop = FALSE должен убедиться, что подмножество массива имеет те же размеры, что и исходный массив.

0 голосов
/ 31 мая 2018

Вы можете сделать это:

Если вы запустите dim(new.array), он вернет три измерения в порядке строки, столбца и последнего измерения, которое представляет ваше количество матриц. Для доступа к любой конкретной матрице по порядку.Вы должны сделать: array [,, 1] выберет первую матрицу этого конкретного массива и так далее.В этом случае общее количество сформированных матриц составляет 100. Запустите dim(new.array) и убедитесь сами.Используя lapply на этих 100 маленьких матрицах.Вы можете вычесть третий ряд из второго ряда.как показано ниже.

> lapply(1:100, function(x)new.array[,,x][2,] - new.array[,,x][3,])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...