【问题标题】:for loop and apply to calculate meansfor 循环并应用于计算均值
【发布时间】:2018-01-30 22:41:05
【问题描述】:

我想计算列表中 32 个向量的均值。我认为这段代码应该可以完成这项工作:

for(i in sequence(length(means16list))){
  mat.means16 <- apply(means16list, 1, mean)
}

means16list 包含 32 个数字向量,mat.means16 应包含均值。它是一个矩阵 4,4,并在上一步中定义。 也许我还不明白循环是如何工作的。 有人可以帮忙吗?

干杯

【问题讨论】:

  • 所以means16list 是一个包含 32 个元素的列表,每个元素都是一个数字向量?在这种情况下,sapply(means16list, mean) 应该这样做。
  • 我知道它可能是给定输出尺寸的矩阵。
  • 好的经验法则:如果你在循环的定义中使用i,你也需要在循环内使用i。否则,您只是一次又一次地运行完全相同的代码行。

标签: r list for-loop apply


【解决方案1】:

mat.means16 每次都被覆盖,您应该创建一个列表并将结果存储在那里。


如果您发布示例数据,可能会有更好的方法来做到这一点,我假设您想要矩阵的rowMeans()

results <- lapply(means16list, rowMeans)

【讨论】:

    【解决方案2】:

    除非我误解了,否则为什么不直接:

    # Sample data
    set.seed(2017);
    means16list <- lapply(1:32, function(x) runif(10))
    
    # Return a list of the sample means
    lapply(means16list, mean);
    
    # Return a vector of the sample means
    sapply(means16list, mean);
    

    我看不出for 循环的意义所在。 lapply/sapply 将遍历列表中的每个元素并将函数 mean 应用于它。

    【讨论】:

      猜你喜欢
      • 2016-12-22
      • 1970-01-01
      • 2021-02-02
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 2019-11-30
      • 2020-03-28
      • 1970-01-01
      相关资源
      最近更新 更多