web-dev-qa-db-fra.com

Programmation R - Ajout d'une colonne supplémentaire à la matrice existante

Je suis un débutant en programmation R et j'essaie d'ajouter une colonne supplémentaire à une matrice de 50 colonnes. Cette nouvelle colonne serait la moyenne des 10 premières valeurs de cette ligne.

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
}

Cela donne l'erreur ci-dessous

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

J'ai essayé

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

Mais cela ne fonctionne que pour une ligne, si j'utilise ce cbind dans la boucle, toutes les anciennes valeurs sont écrasées.

Comment ajouter la moyenne des 10 premières valeurs dans la nouvelle colonne. Existe-t-il une meilleure façon de procéder que de boucler sur les lignes?

25
user2085566

Bam!

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

Sur les grands ensembles de données, il est cependant plus rapide (et sans doute plus simple) d'utiliser:

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

Je pense que vous pensez trop à cela.

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