我是 R 新手(3 个月)。在数据框中,我想研究列中的值是否存在于第二列中。然而,第二列有一个重复的向量,如下所示:
插入 df:
library(tidyverse)
numbers.col <- c(1,2,3)
letters.col <- c("a", "b", "c")
search.for <- list("a","b")
df <- data.frame(numbers.col, letters.col)
df$search.for <- list(search.for)
df
这会导致:
numbers.col letters.col search.for
1 1 a a, b
2 2 b a, b
3 3 c a, b
正在尝试寻找。如果它有效,我将在第 1 行和第 2 行中显示“Ok”,在第 3 行中显示“Nok”(结果列)
mutate(df, result = if_else(df$letters.col %in% df$search.for, "Ok", "Nok"))
numbers.col letters.col search.for result
1 1 a a, b Nok
2 2 b a, b Nok
3 3 c a, b Nok
有办法让它发挥作用吗?
你可以试试
> transform(df, result = c("Nok", "Ok")[1 + mapply(`%in%`, letters.col, search.for)])
numbers.col letters.col search.for result
1 1 a a, b Ok
2 2 b a, b Ok
3 3 c a, b Nok