【问题标题】:Order of operations in summarise [closed]总结中的操作顺序[关闭]
【发布时间】: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提交了一个问题

标签: r tidyverse magrittr


【解决方案1】:

这是一个错误,请参阅https://github.com/tidyverse/dplyr/issues/3233。它已在 0.7.4.9001 中修复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    • 2011-09-06
    • 2015-09-11
    • 1970-01-01
    相关资源
    最近更新 更多