magrittr和日期对象

时间:2015-01-26 10:21:43

标签: r magrittr

我刚刚注意到,当我从彼此中减去两个日期然后尝试使用magrittr(%>%)转换为数值时,我得到一个日期,就好像我只是将日期差异包装在{ {1}}我将天数差异作为数值。请参阅下面的简单示例:

as.numeric()

虽然这在这里不是什么大问题,但我想了解为什么会发生这种情况以便能够预测其他(对我意外的)行为。

3 个答案:

答案 0 :(得分:4)

试试这个,没有额外的括号,管道先计算,然后减去。

(as.Date("2014-10-10") - as.Date("2014-10-1")) %>% as.numeric

答案 1 :(得分:3)

"全押magrittr解决方案"也有效。鉴于最近管道运营商的使用急剧增加,不少人评论说过度接触管道操作员(和别名)可能会伤害他们的眼睛。因此扰流板块。

  

as.Date(" 2014-10-10")%>%
减去(as.Date(" 2014-10-1"))%>%
  as.numeric

# [1] 9

答案 2 :(得分:0)

我特别发现magrittr的操作命名非常烦人。在给定的示例中,我将使用bizarro pipe,就像魅力一样

library(magrittr)
as.Date("2014-10-10") - as.Date("2014-10-1") %>% as.numeric
## [1] "1970-01-10"
as.Date("2014-10-10") - as.Date("2014-10-1") ->.; as.numeric(.)
## [1] 9

更进一步,在下面的例子中你需要3个管道才能得到星期差异(我不喜欢@ zx8754提出的括号解决方案,因为我认为它违背了使用管道的目的首先,你可以只用1个奇数。

as.Date("2014-10-10") %>% subtract(as.Date("2014-08-1")) %>% as.numeric %>% divide_by(7)
## [1] 10
as.Date("2014-10-10") - as.Date("2014-08-1") ->.; as.numeric(.)/7
## [1] 10

我并不是说使用bizarro是解决方案,我只是认为可以改进magrittr,这就是全部。