【发布时间】:2019-09-12 13:55:51
【问题描述】:
我有一个 tibble,其中有一列格式化为日期。出于问题的目的,我将生成类似的数据(真实数据要大得多!):
> dates = tribble(~YrMon, "2011-01-01", "2011-02-01", "2011-03-01", "2011-04-01")
%>% mutate(YrMon = as.Date(YrMon))
> dates
# A tibble: 4 x 1
YrMon
<date>
1 2011-01-01
2 2011-02-01
3 2011-03-01
4 2011-04-01
我只想隔离几个月。当我在不使用管道的情况下提取月份时,它按预期工作:
> format(dates$YrMon, "%m")
[1] "01" "02" "03" "04"
但是,当我使用 tidyverse 管道做我认为应该是相同的事情时,我会得到 gobbledygook(我认为这是返回的 tibble 的某种格式):
> dates %>% format(.$YrMon, "%m")
[1] "\033[38;5;246m# A tibble: 4 x 1\033[39m"
[2] " YrMon "
[3] " \033[3m\033[38;5;246m<date>\033[39m\033[23m "
[4] "\033[38;5;250m1\033[39m 2011-01-01"
[5] "\033[38;5;250m2\033[39m 2011-02-01"
[6] "\033[38;5;250m3\033[39m 2011-03-01"
[7] "\033[38;5;250m4\033[39m 2011-04-01"
发生了什么,有没有办法使用 %>% 管道获得预期的答案?
【问题讨论】:
-
什么是 gobbledygook?它有一个更简单的术语吗?另外,为什么不将所有内容都放入 mutate 或 pull and format 中?或润滑的月份?这是
pull:dates %>% pull(YrMon) %>% format(., "%m")的东西,但我会选择month。 -
或试试
dates$YrMon %>% format(., "%m") -
或
dates %>% with(., format(YrMon, "%m"))