R语言中,数据框列名是规范的,这里想提取Y2:Y11, Q1:Q5这样的列名,又不想写完整列名,
在外面生成一个变量名包含上面的内容,比如:
n1 = str_c("Y",2:11)
n1
n2 = str_c("Q",1:5)
n2
然后直接根据n1,n2的内容去提取。
library(dplyr)
dd %>% select(n1,n2) %>% head
有一个前缀的bug,如果数据框中有n1
和n2
的列名,上面的数据就变为了:
dd$n1 = rnorm(44)
dd$n2 = rnorm(44)
library(dplyr)
dd %>% select(n1,n2) %>% head
显然,这不是我们想要的。
用
dplyr
中的all_of
函数,使用变量的内容,而不是变量的原始名称:
dd %>% select(all_of(n1),all_of(n2)) %>% head
这才是一个比较妥帖的方案。
问题解决!