在数据帧中查找字符串并选择包含r的行



我有一个这样的表

tbody> <<tr>BCD
A列 B列 C列 D列
x1k1
k2k2
z3k3
y4k4

我们可以使用if_anystr_detect

library(dplyr)
library(stringr)
df1 %>% 
filter(if_any(everything(), ~ str_detect(.x, 'A|3|y')))

与产出

ColumnA ColumnB ColumnC ColumnD
1       A       x       1      k1
2       C       z       3      k3
3       D       y       4      k4

或使用base R与非正则表达式解决方案

subset(df1, Reduce(`|`, lapply(df1, (x) x %in% c('A', 3, 'y'))))
ColumnA ColumnB ColumnC ColumnD
1       A       x       1      k1
3       C       z       3      k3
4       D       y       4      k4

数据
df1 <- structure(list(ColumnA = c("A", "B", "C", "D"), ColumnB = c("x", 
"k", "z", "y"), ColumnC = 1:4, ColumnD = c("k1", "k2", "k3", 
"k4")), class = "data.frame", row.names = c(NA, -4L))

vec <- c('A', 3, 'y') 
df[rowsum(+(as.matrix(df) %in% vec), c(row(df)))>0,]
ColumnA ColumnB ColumnC ColumnD
1       A       x       1      k1
3       C       z       3      k3
4       D       y       4      k4
另一种方法是使用regex:
df[grepl(sprintf('\b(%s)\b', paste0(vec, collapse = '|')), do.call(paste, df)), ]
ColumnA ColumnB ColumnC ColumnD
1       A       x       1      k1
3       C       z       3      k3
4       D       y       4      k4

最新更新