R筛选iris数据集versicolor物种及指定列时运行报错如何解决
报错原因
- dplyr 中
filter()函数的作用是按行筛选数据集,除第一个输入的数据集参数外,其余传入的参数都必须是返回逻辑值的筛选条件,用于判断每行是否需要保留。 - 你的代码错误地将需要保留的列名
Sepal.Width、Sepal.Length放到了filter()的参数中,这两列是数值型(double)数据,不是逻辑向量,不满足filter()的参数要求,因此触发报错。
修复方案
方案1:嵌套函数写法
调整filter()和select()的参数位置,行筛选条件全部放入filter(),需要保留的列名放入select():
select(filter(iris, Species == "versicolor"), Sepal.Length, Sepal.Width)
方案2:管道符写法(可读性更高)
使用dplyr的管道符%>%按处理顺序编写代码,逻辑更清晰:
# 需先加载dplyr包,若未安装先运行 install.packages("dplyr") library(dplyr) iris %>% filter(Species == "versicolor") %>% select(Sepal.Length, Sepal.Width)
内容的提问来源于stack exchange,提问作者vishal hadagali
相关产品推荐
相关产品推荐

