假设我们在开头有两个对象:
a <- c(2,4,6)
b <- 8
Run Code Online (Sandbox Code Playgroud)
如果我们在每个中应用mean()函数,我们得到:
> mean(a)
[1] 4
> mean(b)
[1] 8
Run Code Online (Sandbox Code Playgroud)
......这绝对正常.
如果我创建一个合并a和b的新对象...
c <- c(2,4,6,8)
Run Code Online (Sandbox Code Playgroud)
并计算其平均值......
> mean(c)
[1] 5
Run Code Online (Sandbox Code Playgroud)
...我们得到5,这是预期值.
但是,我想同时计算两个对象的平均值.我试过这种方式:
> mean(a,b)
[1] 4
Run Code Online (Sandbox Code Playgroud)
我们可以看到,它的值与预期的正确值(5)不同.我错过了什么?
如上所述,正确的解决方案是在将向量传递给之前连接向量mean:
mean(c(a, b))
Run Code Online (Sandbox Code Playgroud)
您的原始代码给出错误结果的原因是由于mean第二个参数是:
## Default S3 method:
mean(x, trim = 0, na.rm = FALSE, ...)
Run Code Online (Sandbox Code Playgroud)
因此,当mean使用两个数字参数调用时,第二个作为trim参数传递,反过来,它控制要完成多少修剪.在您的情况下,8使函数简单地返回中位数(有意义的值trim将是0到0.5之间的分数).