【问题标题】:how to avoid for loop using apply function in this question如何在这个问题中使用 apply 函数来避免 for 循环
【发布时间】:2019-12-19 05:23:54
【问题描述】:
mat<-matrix(1:9,nrow=3,ncol=3)
for(i in 1:3){
  print(colSums(mat[1:i,]))
}

我正在尝试计算部分矩阵的 colSums 的平均值。 在这种情况下如何避免 for 循环?答案可能类似于下面的代码,但我不知道如何继续。

apply(mat,2,function(x) colSums(mat[]))

提前致谢!

【问题讨论】:

  • 1) mat&lt;-matrix[1:9,nrow=3,ncol=3] 不是有效的 R 代码。 2) 您的for 循环在运行时出错。 3) calculate mean of colSums of part of a matrix. 是什么意思 4) 你的预期输出是什么?
  • 谢谢提醒!我添加一个屏幕截图。我想打印矩阵一部分的 colSums,例如屏幕截图中的 mat[1:i,]。

标签: r performance for-loop apply


【解决方案1】:

最简单的方法是使用cumsum() 获取总和,使用rowMeans() 获取平均值:

apply(mat, 2, cumsum)[2:4, ]
#      [,1] [,2] [,3] [,4]
# [1,]    3   11   19   27
# [2,]    6   18   30   42
# [3,]   10   26   42   58
rowMeans(apply(mat, 2, cumsum)[2:4, ])
# [1] 15 24 34

【讨论】:

  • 非常感谢。有什么百科全书可以让我学习所有这些基本知识吗?我发现像教程点这样的在线介绍还远远不够。
  • 我在Web Resources for R 有一组学习 R 的网络链接。我还找到了 Andrie de Vries 和 Joris Meys 的 R For Dummies, 2nd Edition 2nd Edition 和 Robert Kabacoff 的R in Action: Data Analysis and Graphics with R成为有用的介绍。
猜你喜欢
  • 1970-01-01
  • 2021-12-18
  • 1970-01-01
  • 1970-01-01
  • 2020-06-29
  • 2018-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多