【发布时间】:2019-07-24 14:35:56
【问题描述】:
对于以下两个矩阵,我想找到每一列的平均值。行数少,列数少,容易查找。
yy=matrix(c(1:40), nrow = 10, ncol = 4)
tt=c(1:8)
yy_new=matrix(NA, nrow = 10, ncol=length(tt))
yy_new1=matrix(NA, nrow = 10, ncol=length(tt))
dim(yy_new)
for ( it in 1:10){
for ( tim in 1:8){
yy_new[it, tim]=yy[it,1]+yy[it,3]*tt[tim]
yy_new1[it, tim]=yy[it,2]+yy[it,4]*tt[tim]+2
}
}
yy_new_mean=apply(yy_new,2,mean) #column wise mean of the first matrix
yy_new1_mean=apply(yy_new1,2,mean)
如果列数和行数非常大,比如 10000 行和 2000 列,则创建内部循环 (yy_new and yy_new1) 中的矩阵会花费太多时间。我可以有效地做到这一点,以便计算不会花费很长时间吗?
【问题讨论】:
-
创建矩阵 yy_new[iteration, tim] 需要很长时间。我可以在不存储矩阵的情况下获得 col 均值吗?
-
谢谢。我正在尝试加快创建矩阵 yy_new[iteration, tim] 和 yy_new1[iteration, tim] 的计算
-
你能举例说明
yy_new矩阵应该是什么样子吗?现在代码不起作用,因为您没有定义it。那是迭代吗? -
为什么不试试
apply()它通常更快。此外,如果您想使用 for 循环,请使用foreach(),它可以并行工作并且速度更快 -
现在应该可以了,我已经定义好了。 @Leo Barlach