Я использую функцию mutate
dplyr для создания столбца даты 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)))
заставляет его работать, потому что вызов оценивается. (или что-то типа того). - person thelatemail   schedule 04.10.2018