我不确定为什么这两种获取平均值的方法会返回不同的值。我知道,第二部分代码令人费解。这个问题不是要使代码更好,而是要找出区别,为什么它们返回不同的结果。
谢谢!
public static ITable<T> GetAll<T>(this UserQuery uq) where T : class => (ITable<T>)uq.GetTable(typeof(T));
答案 0 :(得分:2)
mean(c(x,y))
给出了x
和y
的平均值,但是您使用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))