用假人:: dummy.data.frame轻敲需要额外的步骤

时间:2018-10-01 05:35:34

标签: r tibble

我刚刚发现与tibbledummies程序包的奇怪交互,这两个程序我都非常依赖。请参见下面的第一个代码:

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添加到管道中,但只是对为什么必须这样做感到好奇。

0 个答案:

没有答案