我是R编程的初学者,正在尝试向一个有50列的矩阵添加额外的一列。这个新列将是该行中前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个值的平均值。除了循环遍历行之外,有没有更好的方法呢?
发布于 2013-02-20 14:10:00
哈哈!
a <- matrix(1:5000, nrow=100)
a <- cbind(a,apply(a[,1:10],1,mean))
然而,在大型数据集上,它的使用速度更快(也可以说更简单):
cbind(a, rowMeans(a[,1:10]) )
发布于 2013-02-20 14:04:44
我觉得你想得太多了。
a <- matrix(1:5000, nrow=100)
a <- transform(a, first10ave = colMeans(a[1:10,]))
https://stackoverflow.com/questions/14972926
复制相似问题