Подтвердить что ты не робот

R - добавление дополнительного столбца в существующую матрицу

Я начинаю программировать R и пытаюсь добавить один дополнительный столбец в матрицу, содержащую 50 столбцов. Этот новый столбец будет avg первых 10 значений в этой строке.

randomMatrix <- generateMatrix(1,5000,100,50)
randomMatrix51 <- matrix(nrow=100, ncol=1)

for(ctr in 1:ncol(randomMatrix)){  
randomMatrix51.mat[1,ctr]  <- sum(randomMatrix [ctr, 1:10])/10
}

Это дает ошибку ниже

Error in randomMatrix51.mat[1, ctr] <- sum(randomMatrix[ctr, 1:10])/10 :incorrect
number of subscripts on matrix

Я пробовал это

cbind(randomMatrix,sum(randomMatrix [ctr, 1:10])/10)

Но он работает только для одной строки, если я использую этот cbind в цикле, все старые значения переписаны.

Как добавить среднее значение первых 10 значений в новый столбец. Есть ли лучший способ сделать это иначе, чем цикл по строкам?

4b9b3361

Ответ 1

Bam!

a <- matrix(1:5000, nrow=100)
a <- cbind(a,apply(a[,1:10],1,mean))

В больших наборах данных, однако, быстрее (и, возможно, проще) использовать:

cbind(a, rowMeans(a[,1:10]) )

Ответ 2

Подумаешь, ты уже об этом думаешь.

a <- matrix(1:5000, nrow=100)
a <- transform(a,  first10ave = colMeans(a[1:10,]))

Ответ 3

Я бы сделал что-то вроде этого:

   randomMatrix$newCOL <- rowMeans(randomMatrix[,1:10])