如何在给定的单词列表中找到两个不同的字符(例如N和Z)

时间:2018-10-30 13:55:37

标签: r

假设这是我的数据框(znot,n喷嘴,zean)。我希望输出像突出显示z和n这样。如何在R中编写一个遍历每个单词并找到字符n和z的函数

我知道R中有一个称为或(|)的函数,但没有AND之类的函数。

1 个答案:

答案 0 :(得分:0)

像这样吗?

pat <- c("n", "z")
x <- c("znot", "nozzle", "zean", "zebra", "nonsense")
dat <- data.frame(x)

search_letters <- function(x, pattern, ignore.case = FALSE, value = TRUE){
  i <- apply(sapply(pattern, grepl, x, ignore.case = ignore.case), 1, all)
  if(value) x[i] else i
}

search_letters(dat$x, pat)
#[1] znot   nozzle zean  
#Levels: nonsense nozzle zean zebra znot

search_letters(dat$x, pat, value = FALSE)
#[1]  TRUE  TRUE  TRUE FALSE FALSE