R语言dplyr中的Select函数变量列名

背景介绍:

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,如果数据框中有n1n2的列名,上面的数据就变为了:

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


这才是一个比较妥帖的方案。

问题解决!

猜你喜欢

转载自blog.csdn.net/yijiaobani/article/details/125387609