#r #arrays
Вопрос:
У меня большой массив, и мне нужно найти значения строк() для всех матриц в массиве одновременно, но по отдельности. Всякий раз, когда я это делаю:
rowSums(array1[ , ,1:1000])
Я получаю общую сумму всех значений в каждой строке по всему массиву. Что мне нужно, так это:
rowSums(array1[ , ,1])
Но это дает мне только rowSums() для 1 матрицы, и мне это нужно для всех из них. По сути, мне нужно преобразовать массив в новый массив, где матрицы представляют собой суммы строк предыдущих матриц.
Я мог бы сделать это вручную, но это заняло бы у меня несколько часов из-за размера массива, и я знаю, что есть простое решение, которое я неграмотен, чтобы увидеть.
Огромное спасибо.
Ответ №1:
Мы можем использовать apply
с MARGIN = 3
apply(array1, 3, rowSums)
[,1] [,2] [,3]
[1,] 9 27 45
[2,] 12 30 48
что то же самое, что делать индивидуально
> rowSums(array1[, , 1])
[1] 9 12
> rowSums(array1[, , 2])
[1] 27 30
> rowSums(array1[, , 3])
[1] 45 48
данные
array1 <- array(1:18, c(2, 3, 3))