rowMeans()和mean()返回不同的值?

时间:2019-04-18 23:50:07

标签: r

我不确定为什么这两种获取平均值的方法会返回不同的值。我知道,第二部分代码令人费解。这个问题不是要使代码更好,而是要找出区别,为什么它们返回不同的结果。

谢谢!

public static ITable<T> GetAll<T>(this UserQuery uq) where T : class => (ITable<T>)uq.GetTable(typeof(T));

2 个答案:

答案 0 :(得分:2)

mean(c(x,y))给出了xy的平均值,但是您使用mean(x:y)运算符写了:,它是{的数字序列{1}}至x(在控制台上尝试?`:`了解更多信息)。这对于整数是等效的,但是请注意,它们是不同的:

y

因为:

> mean(2.1:12.6)
[1] 7.1
> mean(c(2.1, 12.6))
[1] 7.35

答案 1 :(得分:1)

您在第二种方法中使用的列不正确。

以下代码没有达到您的期望:

summarise(sepal_average = mean(Sepal.Length:Sepal.Width))

mean的参数是Sepal.Length:Sepal.Width,执行时不会占用这两列。

相反,它将列名替换为列值,并借助:生成常规序列:

> 5.1:3.5
[1] 5.1 4.1
> mean(5.1:3.5)
[1] 4.6

平均结果正是您为id = 1获得的结果。

相反,您应该传递值:

sepal_average = mean(c(Sepal.Length, Sepal.Width))