R:检查向量是否是数据帧中任何行的一部分

Mel*_*Mel 3 r vector dataframe

假设我有这个向量c("a", "b", "c")和以下数据框:

a d t g h
r a b c
a b c
m p o a b t
c t b a
a b c t g
Run Code Online (Sandbox Code Playgroud)

我的向量总是长度为3,每个数据帧行的长度可以是3到6列.如何检查我的向量是否是data.frame行的一部分,而不是遍历每行的每个元素?

对于我给出的示例,预期输出将是:

FALSE
TRUE
TRUE
FALSE
FALSE
TRUE
Run Code Online (Sandbox Code Playgroud)

Nat*_*rth 5

只需创建一个单独的字符串,然后使用每一行grepl.

# My version of your data
check_values <- c("a", "b", "c")
my_data <- structure(list(V1 = c("a", "r", "a", "m", "c", "a"), V2 = c("d", 
"a", "b", "p", "t", "b"), V3 = c("t", "b", "c", "o", "b", "c"
), V4 = c("g", "c", NA, "a", "a", "t"), V5 = c("h", NA, NA, "b", 
NA, "g"), V6 = c(NA, NA, NA, "t", NA, NA)), .Names = c("V1", 
"V2", "V3", "V4", "V5", "V6"), row.names = c(NA, -6L), class = "data.frame")

# Actual solution
row_strings <- do.call(paste0, my_data)
check_string <- paste0(check_values, collapse = "")
grepl(check_string, row_strings, fixed = TRUE)
# [1] FALSE  TRUE  TRUE FALSE FALSE  TRUE
Run Code Online (Sandbox Code Playgroud)