如何修正dplyr中使用filter与across跨列筛选iris数据集的代码报错
报错原因
代码报错是因为across的第二个参数需要传入可执行的谓语判断函数/公式,你直接写>2属于不完整的R表达式,语法不合法,因此触发了unexpected '>'的报错。
正确实现代码
可以用purrr风格的公式语法改写判断条件,代码如下:
# 需提前安装加载dplyr包,未安装先执行 install.packages("dplyr") library(dplyr) iris %>% filter(across(c(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width), ~ .x > 2))
如果偏好基础R的匿名函数写法,也可以用下面的等价实现:
iris %>% filter(across(c(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width), function(x) x > 2))
以上两种写法的逻辑都是只有四个指定列取值全部大于2的行才会被保留,完全匹配你的筛选需求。
内容的提问来源于stack exchange,提问作者Basil。
相关产品推荐
相关产品推荐

