R 等效于 endsWith 以检查字符串列表
R equivalent of endsWith to check against a list of strings
我正在尝试检查数据框列中的值是否以向量中包含的预定义字符串列表中的任何值结尾。我知道可以使用 endsWith 检查单个字符串,但我还没有找到使用它来检查字符串列表的方法。
x <- c(" 2", " 3", " II", " III")
title <- c("a 2", "adbs", "ddig", "difo 3", "fgij III", "sdgoij")
endsWith(title, x)
我不希望此代码执行我想要的操作,但我正在寻找的是使用上述数据提供以下输出的代码。
真假假真真假
一个选项是遍历 'x',将 endsWith
和 Reduce
vector
的 list
应用于单个逻辑 vector
Reduce(`|`, lapply(x, function(y) endsWith(title, y)))
#[1] TRUE FALSE FALSE TRUE TRUE FALSE
另一种选择是 grepl
,方法是 paste
将 'x' 的元素转换为带有分隔符 (|
) 和元字符 ($
) 最后指定字符串的结尾
pat <- paste0("(", paste(x, collapse = "|"), ")$")
grepl(pat, title)
#[1] TRUE FALSE FALSE TRUE TRUE FALSE
我正在尝试检查数据框列中的值是否以向量中包含的预定义字符串列表中的任何值结尾。我知道可以使用 endsWith 检查单个字符串,但我还没有找到使用它来检查字符串列表的方法。
x <- c(" 2", " 3", " II", " III")
title <- c("a 2", "adbs", "ddig", "difo 3", "fgij III", "sdgoij")
endsWith(title, x)
我不希望此代码执行我想要的操作,但我正在寻找的是使用上述数据提供以下输出的代码。 真假假真真假
一个选项是遍历 'x',将 endsWith
和 Reduce
vector
的 list
应用于单个逻辑 vector
Reduce(`|`, lapply(x, function(y) endsWith(title, y)))
#[1] TRUE FALSE FALSE TRUE TRUE FALSE
另一种选择是 grepl
,方法是 paste
将 'x' 的元素转换为带有分隔符 (|
) 和元字符 ($
) 最后指定字符串的结尾
pat <- paste0("(", paste(x, collapse = "|"), ")$")
grepl(pat, title)
#[1] TRUE FALSE FALSE TRUE TRUE FALSE