我只是注意到,当我从另一个日期中减去两个日期,然后尝试使用magrittr (%>%)转换为一个数值时,我就得到了一个日期,就好像我只是简单地用as.numeric()来包装日期差一样,我得到了作为一个数值的天数差。请参阅下面的简单示例:
## version 1
as.Date("2014-10-10") - as.Date("2014-10-1") %>% as.numeric
## return value --> "1970-01-10"
## version 2 (returning the value that I actually want)
as.numeric(as.Date("2014-10-10") - as.Date("2014-10-1"))
## return value --> 9虽然这并不是什么大不了的事,但我想了解为什么这恰好能够预测其他行为(对我来说是意外的)。
发布于 2015-01-26 10:26:00
试试看,没有额外的括号,管道是首先计算,然后减去。
(as.Date("2014-10-10") - as.Date("2014-10-1")) %>% as.numeric
发布于 2015-01-26 10:37:58
一个“全功能的magrittr解决方案”也能工作。鉴于最近管道操作员的使用急剧增加,相当多的人评论说,过度接触管道操作员(和别名)可能会伤害他们的眼睛。因此,扰流板块。
as.Date("2014-10-10") %>% 减去(as.Date(“2014-10-1”)) %>% as.numeric
# [1] 9发布于 2017-02-14 21:11:49
我特别觉得用magrittr命名操作非常烦人。在给定的示例中,我将使用异形管,就像一个魅力
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我不是说用奇怪的方法是解决办法,我只是认为magrittr可以改进,仅此而已。
https://stackoverflow.com/questions/28148257
复制相似问题