2

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

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

我不希望这段代码做我想做的事,但我正在寻找的是使用上述数据提供以下输出的代码。真 假 假 真 真 假

4

1 回答 1

5

一个选项是循环通过“x”、应用和endsWithsReduce到单个逻辑listvectorvector

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

另一种选择是将 'x'greplpaste元素设置为单个字符串,并在末尾使用定界符 ( |) 和元字符 ( $) 来指定字符串的结尾

pat <- paste0("(", paste(x, collapse = "|"), ")$")
grepl(pat, title)
#[1]  TRUE FALSE FALSE  TRUE  TRUE FALSE
于 2019-07-20T15:01:27.540 回答