啊啊啊啊啊吖

2019-02-28   阅读量: 715

数据分析师 R语言

Dplyr过滤器使用动态列名和动态值

扫码加入数据分析学习群

我有

df = data.frame(A=1:10, B=sample(c('TT', 'TG', 'GG'), 10, replace=T))

# df

# A B

#1 1 TG

#2 2 TG

#3 3 GG

#4 4 TT

#5 5 TT

#6 6 TT

#7 7 GG

#8 8 TT

#9 9 TG

#10 10 TT

如果我指定列,我可以使用动态值列表,如:

> vals=c('TT', 'GG')

> df%>% filter(B %in% !!vals)

A B

1 3 GG

2 4 TT

3 5 TT

4 6 TT

5 7 GG

6 8 TT

7 10 TT

现在我想添加以下内容col='B':

df%>% filter(!!col %in% !!vals)

[1] A B

<0 rows> (or 0-length row.names)

解决办法:使用:

df %>% filter(!!sym(col) %in% !!vals)

sym() 将您的字符串转换为符号,dplyr知道要评估该符号。

也df %>% filter(!!as.name(col) %in% !!vals)

添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
0.0000 0 2 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子