【问题标题】:Mean is not calculated correctly in R?R中的平均值计算不正确?
【发布时间】:2014-09-04 15:06:51
【问题描述】:

我很难理解为什么会发生这种情况:

a<-c(1.1,1.2,1.3)
b<-c(2.1,2.3,2.6)
c<-c(1.6,2.3,2.6)

mean<-rowMeans(matrix(c(a,b,c),ncol=3))  
mean  #### This are the mean values
[1] 1.600000 1.933333 2.166667

mean(a[1],b[1],c[1])  #### trying to calculate the mean of 1.1 ,2.1 and 1.6
[1] 1.1  #### Why is this not 1.6??

【问题讨论】:

    标签: r average


    【解决方案1】:

    R 的参数匹配让你大吃一惊:

    > mean(9999,2,3,4,5)
    [1] 9999
    

    help(mean) 说:

    Usage:
    
         mean(x, ...)
    

    然后说它计算x 的平均值并将... 传递给其他方法。在我的示例中,9999 之后的所有数字都被捕获在 dot-dot-dot 中。

    R 然后调用mean.default,因为 9999 只是一个数字,而mean.default 不会对点-点-点参数做任何事情,包括如果其中有任何内容就会出错。

    您可以使用它在您的函数调用中添加任意无用的东西:

    > mean(c(1,2,3,4), monkeys=TRUE)
    [1] 2.5
    

    【讨论】:

    • 我一直认为monkeys=TRUE,但不确定。现在已经确认了。
    【解决方案2】:

    您在mean(a[1],b[1],c[1]) 中对mean 的调用仅对第一个元素进行操作,即mean(a[1])。你需要像这样连接a[1],b[1],c[1]

    > mean(c(a[1],b[1],c[1]))
    [1] 1.6
    

    【讨论】:

    • 另外,创建一个与函数同名的对象也不是一个好主意。
    • 谢谢大家。非常感谢!
    【解决方案3】:

    也许你的问题是你的矩阵被转置了? 试试这个:

    mean<-rowMeans(matrix(c(a,b,c),ncol=3, byrow=T)) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-05
      • 2021-08-05
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多