R Dplyr中select语句同时选择指定列和条件匹配列的问题
问题原因
你出现报错的核心原因是误用了&符号拼接dplyr的列选择操作:
&是用于数值/逻辑向量判断的运算符,不能用来拼接两个select类操作- 即使去掉
&用管道连续写两个select,第一个select("Year")会直接把数据集裁剪到只剩Year一列,后续select_if再筛选含Apple的列时会匹配不到结果,同样无法得到你要的输出。
正确写法
写法1(dplyr 1.0.0+ 推荐,用select+where)
直接在select里同时指定固定要保留的列和匹配规则即可:
Subset <- df %>% select(Year, where(~ grepl("Apple", names(.x))))
写法2(兼容旧版dplyr的select_if写法)
把Year的匹配规则合并到select_if的正则判断里:
Subset <- df %>% select_if(~ grepl("^Year$|Apple", names(.x)))
这里的正则规则会匹配列名完全等于Year或者包含Apple的所有列。
内容的提问来源于stack exchange,提问作者user17370838
相关产品推荐
相关产品推荐

