dplyr :: select_ behavior with factor

时间:2018-02-22 15:41:05

标签: r select dplyr

我使用dplyr :: select来选择我的数据集的列。我观察了一个关于select_ with factor的有趣现象,并想知道为什么会这样。

我有一个4x3数据框,想要选择列“a”和“c”

x <- matrix(1:12, ncol = 3) %>% 
  as.data.frame() %>% 
  `colnames<-`(c("a","b", "c"))

# works, output: "a" "c"
x %>% select_(.dots = c("a", "c")) %>% colnames()

# change the search term to a factor, output wrong columns: "a" "b"
x %>% select_(.dots = as.factor(c("a", "c"))) %>% colnames()

你能不能暗示为什么会这样?

1 个答案:

答案 0 :(得分:1)

问题是factor在内部存储为整数。因此,它强制转换为整数,导致1,2和select选择前两个。通常,带有select_方法的.dots已过时。我们可以使用quosures或select_atselect_if

x %>%
   select_at(vars(a, c))

或者

x %>% 
   select(a, c)

或者

x %>% 
  select(!!! quos(a, c))