Try
indx <- Reduce(`|`, lapply(df[,-1], `%in%`, bh)) df[indx,]
Or using data.table
library(data.table) nm1 <- paste0("sample", 1:3) setDT(df)[df[, Reduce(`|`,lapply(.SD, `%in%`, bh)), .SDcols=nm1]] # row_name sample1 sample2 sample3 #1: s1_100 aba #2: s1_200 aba #3: s1_500 aah
data
df <- structure(list(row_name = c("s1_100", "s1_200", "s1_300", "s1_400", "s1_500"), sample1 = c("a", "a", "a", "a", "a"), sample2 = c("b", "b", "a", "a", "a"), sample3 = c("a", "a", "a", "a", "h")), .Names = c("row_name", "sample1", "sample2", "sample3"), class = "data.frame", row.names = c(NA, -5L))
akrun
source share