首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >magrittr和date对象

magrittr和date对象
EN

Stack Overflow用户
提问于 2015-01-26 10:21:43
回答 3查看 200关注 0票数 3

我只是注意到,当我从另一个日期中减去两个日期,然后尝试使用magrittr (%>%)转换为一个数值时,我就得到了一个日期,就好像我只是简单地用as.numeric()来包装日期差一样,我得到了作为一个数值的天数差。请参阅下面的简单示例:

代码语言:javascript
复制
## 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

虽然这并不是什么大不了的事,但我想了解为什么这恰好能够预测其他行为(对我来说是意外的)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-26 10:26:00

试试看,没有额外的括号,管道是首先计算,然后减去。

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

票数 4
EN

Stack Overflow用户

发布于 2015-01-26 10:37:58

一个“全功能的magrittr解决方案”也能工作。鉴于最近管道操作员的使用急剧增加,相当多的人评论说,过度接触管道操作员(和别名)可能会伤害他们的眼睛。因此,扰流板块。

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

代码语言:javascript
复制
# [1] 9
票数 3
EN

Stack Overflow用户

发布于 2017-02-14 21:11:49

我特别觉得用magrittr命名操作非常烦人。在给定的示例中,我将使用异形管,就像一个魅力

代码语言:javascript
复制
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种奇怪的方法。

代码语言:javascript
复制
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可以改进,仅此而已。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28148257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档