【发布时间】:2018-10-03 22:09:59
【问题描述】:
我正在使用 dplyr 的 mutate 函数通过引领另一列来创建数据框的 POSIX 日期列。当我尝试使用单个日期填充 lead 函数中的缺失值时,出现错误:
> dates
# A tibble: 5 x 1
orig_date
<dttm>
1 2016-06-21 20:00:00
2 2016-07-09 22:00:00
3 2016-07-10 22:00:00
4 2016-07-20 21:00:00
5 2016-07-21 21:00:00
> fillin_date
[1] "2018-08-29 UTC"
> dates %>% mutate(next_date = lead(orig_date, 1, default = fillin_date))
Error in mutate_impl(.data, dots) :
Not compatible with requested type: [type=symbol; target=double].
这不会发生在 mutate 之外:
> lead(dates$orig_date, 1, default = fillin_date)
[1] "2016-07-09 22:00:00 UTC" "2016-07-10 22:00:00 UTC" "2016-07-20 21:00:00 UTC"
[4] "2016-07-21 21:00:00 UTC" "2018-08-29 00:00:00 UTC"
这里出了什么问题?
【问题讨论】:
-
看起来
default=参数在 dplyr 管道中使用时必须是一个值,并且不能是对对象(符号)的引用。如果你这样做dates %>% mutate(next_date = lead(orig_date, 1, default = as.POSIXct("2018-08-29")))它似乎工作。这让我觉得是一个错误,但我会看看是否有人能找到更好的解决方案。即使做dates %>% mutate(next_date = lead(orig_date, 1, default = (fillin_date)))也可以让它工作,因为调用会被评估。 (或类似的东西)。 -
提交了issue