如何筛选DataFrame以保留包含'inhibitor'的所有元素?
解决DataFrame筛选含'inhibitor'行的问题
你的代码存在两个问题:一是在dplyr管道后的filter里,没必要硬写TC1S1[,1](管道已经把数据传递到当前步骤);二是grepl默认区分大小写,而你的目标文本是大写的INHIBITORS,会导致匹配失败。
正确代码示例
library(dplyr) # 读取数据 TC1S1 <- read.csv('https://raw.githubusercontent.com/bandcar/Examples/main/TC1S1.csv') # 筛选包含'inhibitor'的行(不区分大小写) x <- TC1S1 %>% filter(grepl('inhibitor', TC1S1, ignore.case = TRUE))
核心修正说明
- 管道用法优化:
%>%已经将TC1S1传递给filter函数,直接引用列名(这里第一列的列名就是TC1S1)即可,无需重复指定数据源。 - 大小写不敏感匹配:添加
ignore.case = TRUE参数,让grepl能匹配到大写的INHIBITORS,确保所有相关行都被筛选出来。 - 完整保留原数据:执行后得到的
x会完整保留原DataFrame中符合条件的所有行内容,包括你举例的"342 RENIN INHIBITORS"这类条目。
内容的提问来源于stack exchange,提问作者bandcar
相关产品推荐
相关产品推荐

