【问题标题】:Calculate Weighted Arithmetic Mean with a loop?用循环计算加权算术平均值?
【发布时间】:2015-07-24 19:26:39
【问题描述】:

在 R 中,我可以使用weighted.mean来计算加权算术平均值。例如:

wt <- c(5,  5,  4,  1)/15
x <- c(3.7,3.3,3.5,2.8)
xm <- weighted.mean(x, wt)
xm
[1] 3.453333

我可以“手动”计算:wt[1]*x[1]+wt[2]*x[2]+wt[3]*x[3]+wt[4]*x[4]

我想写一个循环来做同样的事情。我写了这段代码:

xm <-0
for(j in length(wt)){
    xm <- xm + wt[j]*x[j]
}
xm
[1] 0.1866667

我做错了什么?

【问题讨论】:

    标签: r loops for-loop do-loops


    【解决方案1】:

    不需要循环:

    sum(wt*x)
    # [1] 3.453333
    

    在 R 中,使用 sum 之类的矢量化函数而不是使用简单的算术运算循环,是否更高效且通常输入更少(在这种情况下是一行而不是 5 行)。

    【讨论】:

      【解决方案2】:

      你只是忘记了 1:length(wt)

      xm <-0
      for(j in 1:length(wt)){
      xm <- xm + wt[j]*x[j]
      }
      xm
      [1] 3.453333
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-15
        • 2016-12-22
        • 2021-11-24
        • 2011-12-04
        • 2011-02-12
        • 2010-10-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多