我使用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()
你能不能暗示为什么会这样?
答案 0 :(得分:1)
问题是factor
在内部存储为整数。因此,它强制转换为整数,导致1,2和select
选择前两个。通常,带有select_
方法的.dots
已过时。我们可以使用quosures或select_at
,select_if
等
x %>%
select_at(vars(a, c))
或者
x %>%
select(a, c)
或者
x %>%
select(!!! quos(a, c))