如何基于特定字符串筛选DataFrame中的行?
根据特定字符串筛选DataFrame行的方法
首先先把你提供的不完整DataFrame补全为可运行的R代码:
df <- data.frame( col = c( "在低浓度下不会解离的体。{ECO:0000269|PubMed:27918561}.细胞核 {ECO:0000250}", "细胞核 {ECO:0000250}.内质网膜 {ECO:0000269|PubMed:24807418}; ", "细胞核 {ECO:0000269|PubMed:15897886}.", "细胞核 {ECO:0000305}." ), row.names = c(NA, -4L) )
以下是两种常用的筛选方法:
方法一:基础R原生实现
利用grepl()函数检测字符串是否包含目标内容,返回逻辑向量后用于行索引筛选:
# 保留包含"细胞核"的所有行 filtered_df <- df[grepl("细胞核", df$col), ] # 保留包含特定ECO编号(如ECO:0000269)的行 filtered_df <- df[grepl("ECO:0000269", df$col), ]
如果需要精确匹配完整字符串而非部分包含,设置fixed=TRUE参数:
# 精确匹配"细胞核 {ECO:0000250}"的行 filtered_df <- df[grepl("细胞核 {ECO:0000250}", df$col, fixed = TRUE), ]
方法二:tidyverse工具链实现
使用dplyr的filter()结合stringr的str_detect()函数,语法更直观:
library(dplyr) library(stringr) # 保留包含"细胞核"的行 filtered_df <- df %>% filter(str_detect(col, "细胞核")) # 保留包含ECO:0000269的行 filtered_df <- df %>% filter(str_detect(col, "ECO:0000269"))
精确匹配时用fixed()包裹目标字符串:
filtered_df <- df %>% filter(str_detect(col, fixed("细胞核 {ECO:0000250}")))
内容的提问来源于stack exchange,提问作者nik
相关产品推荐
相关产品推荐

