【发布时间】:2018-05-14 06:13:45
【问题描述】:
第一行代码发生了什么,为什么结果与接下来的两个结果不同?
library(tidyverse)
library(magrittr)
data.frame(A=c(2,2),B=c(1,1)) %>%
summarise(A = sum(A),B = sum(B), D=sum(A)-sum(B))
产量 D=0
data.frame(A=c(2,2),B=c(1,1)) %>%
summarise(A = sum(A),B = sum(B), D=sum(A-B) )
产量为 D=2
data.frame(A=c(2,2),B=c(1,1)) %>%
summarise(sum_A = sum(A),sum_B = sum(B), D=sum(A)-sum(B))
产量为 D=2。
我似乎无法解释为什么 D=0 可能是这种操作的结果。 D=0怎么会是一个明智的结果?
【问题讨论】:
-
有趣的(+1)也看看
data.frame(A=c(2,2),B=c(1,1)) %>% summarise(A = sum(A), B = sum(B), D=sum(A), E = sum(B)) -
mutate似乎工作正常。data.frame(A=c(2,2),B=c(1,1)) %>% mutate(A = sum(A), B = sum(B), D=sum(A)) -
根据
summarise的定义,summarise() 通常用于由 group_by() 创建的分组数据。每个组的输出将有一行。所以可能是因为数据框没有分组?而不需要组的mutate可以按预期工作 -
@Sotos,它通常也可以很好地处理未分组的数据。对我来说它看起来像一个错误
-
这是一个错误,我已经在github.com/tidyverse/dplyr/issues/3233提交了一个问题