【发布时间】:2016-10-18 14:10:57
【问题描述】:
我刚刚注意到一个奇怪而有趣的错误:
as.numeric((Sys.Date()-30)-Sys.Date())
#[1] -30
这是正确的。但是:
library(dplyr)
(Sys.Date()-30)-Sys.Date() %>% as.numeric()
#[1] "1969-12-02"
如果%>% 只是将输出馈送到第一个参数槽,那么这种行为肯定不正确吗?
【问题讨论】:
-
操作顺序?将整个部分放在管道前的括号中。我想运算符优先级是我的意思,而不是操作顺序。
-
或者完全采用 magrittr'esque:
library(magrittr); Sys.Date() %>% subtract(30) %>% subtract(Sys.Date()) %>% as.numeric。这会迫使您放置正确的顺序。 -
不是错误,对运算符优先级的误解,以及将
%>%误解为“左侧的所有内容”魔术语法小精灵。 -
人力资源部。我猜
%>%真的不是管道。 :(