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?
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]) )
Je pense que vous pensez trop à cela.
a <- matrix(1:5000, nrow=100)
a <- transform(a, first10ave = colMeans(a[1:10,]))