如何检查字符串是否完全由某些字符串模式组成

StatGuy45

我有一个字符串向量,我需要检查它们是否符合某个标准。例如,如果某个字符串 say"34|40|65"完全由这些模式组成:c("34", "35", "37", "48", "65"),那么我想返回 1,如果它们的字符串不包含任何这些模式,那么我想返回 -1。如果字符串包含一些模式,但不是完全由这些模式组成,那么我想返回 0。我已经成功地实现了 1 和 -1,但是在产生 0 的逻辑上遇到了问题。就目前而言,我的逻辑对于那些应该产生 0 的字符串,产生 1。这是我的代码,用于确定字符串是否包含这些模式之一。这会给我 1s。

acds <- c("34", "35", "37", "48", "65")
grepl(paste(acds, collapse = "|"), data$comp_cd)

data$comp_cd 是字符串的向量

谢谢!

弗洛里安

您可以使用以下方法检查匹配项:

sapply(strsplit(string,"\\|"), function(x) x %in% patterns)

您可以轻松地将其包装在一个函数中,以根据要求给出数值结果。

checkstring <-function(string,patterns)
{
  matches = sapply(strsplit(string,"\\|"), function(x) x %in% patterns)
  if(sum(matches)==length(matches))
    return(1)
  if(sum(matches)==0)
    return(-1)
  else
    return(0)
}

用法示例:

checkstring("34a|65a",patterns=patterns)
[1] -1
checkstring("34|65",patterns=patterns)
[1] 1
checkstring("34|40|65",patterns=patterns)
[1] 0

希望这可以帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章