【问题标题】:How to use a for loop to calculate the row means of a Matrix如何使用 for 循环计算矩阵的行均值
【发布时间】:2019-10-24 22:01:52
【问题描述】:

我有一个矩阵 (X),我试图在其中计算每一行的平均值。我知道可以使用 rowMeans() 并且可以正常工作,但是,我试图证明也可以使用 for 循环。我将如何做到这一点?

X <- matrix(1:100, nrow = 25, ncol = 4)
for (i in 1:n) {
  nums[i] <- mean(X)
}
print(nums[i])

[1] 50.5

VS.

rowMeans(X)
[1] 38.5 39.5 40.5 41.5 42.5 43.5 44.5 45.5 46.5 47.5 48.5 49.5 50.5 51.5 52.5 53.5 54.5 55.5 56.5 57.5 58.5 59.5 60.5 61.5 62.5

【问题讨论】:

  • apply(X, 1, mean)
  • 谢谢,这成功了! 1 在 apply 函数中代表什么?
  • 在每次迭代中,您都在运行整个矩阵的平均值。应该是mean(X[i,],而不仅仅是mean(X)
  • 1 表示按行执行操作
  • 要执行 mean(X[i,]),我还需要做些什么才能让它运行吗?{r} X &lt;- matrix(1:100, nrow = 25, ncol = 4) for (i in 1:n) { Xmean &lt;- mean(X[i, ]) } Xmean 这样执行时出现越界错误。跨度>

标签: r


【解决方案1】:

只是将@David 的评论变成答案。

row_m <- vector("list", nrow(X))
for (i in 1:nrow(X)) {
  row_m[i]<- mean(X[i,])
}

unlist(row_m)

#  [1] 38.5 39.5 40.5 41.5 42.5 43.5 44.5 45.5 46.5 47.5 48.5 49.5 50.5 51.5
# [15] 52.5 53.5 54.5 55.5 56.5 57.5 58.5 59.5 60.5 61.5 62.5

【讨论】:

  • 如果你想row_m &lt;- c(),你就不必unlistafter。
  • row_m被初始化为list开头不是吗?
  • 我是说;)
  • 是的,这将是非列表:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-22
  • 1970-01-01
  • 2019-11-30
  • 2015-02-20
  • 2017-08-21
  • 2019-06-12
  • 1970-01-01
相关资源
最近更新 更多