关于结尾为:R等效于endWith以检查字符串列表

 2021-04-09 

R equivalent of endsWith to check against a list of strings

我正在尝试检查数据帧的列中的值是否以向量中包含的预定义字符串列表中的任何值结尾。我知道可以使用endsWith来检查单个字符串,但是我还没有找到一种使用此方法来检查字符串列表的方法。

1
2
3
x <- c(" 2"," 3"," II"," III")
title <- c("a 2","adbs","ddig","difo 3","fgij III","sdgoij")
endsWith(title, x)

我不希望该代码执行我想要的操作,但是我正在寻找的代码是使用上述数据提供以下输出的代码。
真假真真假


一种选择是循环遍历\\'x \\',将vector s的endsWithReduceReduce应用于单个逻辑vector

1
2
Reduce(`|`, lapply(x, function(y) endsWith(title, y)))
#[1]  TRUE FALSE FALSE  TRUE  TRUE FALSE

另一种选择是grepl,通过paste将\\'x \\'的元素分为单个字符串,并在其末尾使用定界符(|)和元字符($)以指定字符串的结尾

1
2
3
pat <- paste0("(", paste(x, collapse ="|"),")$")
grepl(pat, title)
#[1]  TRUE FALSE FALSE  TRUE  TRUE FALSE