首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >R编程-向现有矩阵添加额外的列

R编程-向现有矩阵添加额外的列
EN

Stack Overflow用户
提问于 2013-02-20 13:30:44
回答 2查看 91.3K关注 0票数 26

我是R编程的初学者,正在尝试向一个有50列的矩阵添加额外的一列。这个新列将是该行中前10个值的平均值。

代码语言:javascript
复制
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
}

这将产生以下错误

代码语言:javascript
复制
Error in randomMatrix51.mat[1, ctr] <- sum(randomMatrix[ctr, 1:10])/10 :incorrect
number of subscripts on matrix

我试过了

代码语言:javascript
复制
cbind(randomMatrix,sum(randomMatrix [ctr, 1:10])/10)

但是它只适用于一行,如果我在循环中使用这个cbind,所有旧值都会被覆盖。

如何在新列中添加前10个值的平均值。除了循环遍历行之外,有没有更好的方法呢?

EN

回答 2

Stack Overflow用户

发布于 2013-02-20 14:10:00

哈哈!

代码语言:javascript
复制
a <- matrix(1:5000, nrow=100)
a <- cbind(a,apply(a[,1:10],1,mean))

然而,在大型数据集上,它的使用速度更快(也可以说更简单):

代码语言:javascript
复制
cbind(a, rowMeans(a[,1:10]) )
票数 40
EN

Stack Overflow用户

发布于 2013-02-20 14:04:44

我觉得你想得太多了。

代码语言:javascript
复制
a <- matrix(1:5000, nrow=100)
a <- transform(a,  first10ave = colMeans(a[1:10,]))
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14972926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档