【发布时间】:2020-02-19 04:48:46
【问题描述】:
对于以下两个矩阵,
yy=matrix(c(1:40), nrow = 10, ncol = 8)
tt=diag(1:4)
我想创建一个新矩阵yy_new=matrix(NA, nrow = 10, ncol=ncol(tt)),方法是将每一行和yy 的第一个4 column 乘以tt。例如,对于第一行yy_new=yy[1,1:4]%*%tt,第二行是
yy_new=yy[2,1:4]%*%tt。最后,我希望每列中yy_new 的平均值为yy_new=apply(yy_new,2,mean)。以下循环运行良好,但对于大型数据集,它是耗时的。
yy_new=matrix(NA, nrow = 10, ncol=ncol(tt))
for ( it in 1:10){
for ( tim in 1:4){
yy_new[it, tim]=yy[it,tim]*tt[tim,tim]
}
}
yy_new=apply(yy_new,2,mean)
同样,通过考虑yy 的最后四列,我想要另一个矩阵yy_new1
yy_new1=matrix(NA, nrow = 10, ncol=ncol(tt))
如何使用任何内置函数或自定义函数有效地做到这一点? 任何帮助表示赞赏。
【问题讨论】: