Я только что обнаружил странное взаимодействие с пакетами tibble
и dummies
, на которые я сильно полагаюсь.См. Следующий первый код:
data.frame(year = c(2015, 2016, 2017, 2018)) %>%
dplyr::mutate(year = as.factor(year)) %>%
dummies::dummy.data.frame(., dummy.classes = "factor")
, который правильно производит
year2015 year2016 year2017 year2018
1 1 0 0 0
2 0 1 0 0
3 0 0 1 0
4 0 0 0 1
Если мы добавим as.tibble()
к трубе, так что
data.frame(year = c(2015, 2016, 2017, 2018)) %>%
dplyr::mutate(year = as.factor(year)) %>%
as.tibble() %>%
dummies::dummy.data.frame(., dummy.classes = "factor")
произведет
year
1 2015
2 2016
3 2017
4 2018
Если мы добавим еще один дополнительный шаг dummy.data.frame
ко второму коду, так что
data.frame(year = c(2015, 2016, 2017, 2018)) %>%
dplyr::mutate(year = as.factor(year)) %>%
as.tibble() %>%
dummies::dummy.data.frame(., dummy.classes = "factor") %>%
dummies::dummy.data.frame(., dummy.classes = "factor")
снова выдаст
year2015 year2016 year2017 year2018
1 1 0 0 0
2 0 1 0 0
3 0 0 1 0
4 0 0 0 1
Не можетдостаточно выяснить, что здесь происходит, и не увидел проблемы, поданной на GitHub.Мой обходной путь в настоящее время заключается в добавлении as.data.frame()
к трубе всякий раз, когда я работаю с dummies
, но мне просто любопытно, почему я должен.