【问题标题】:R match part of string against vector of stringsR将字符串的一部分与字符串向量匹配
【发布时间】:2014-10-08 19:53:28
【问题描述】:

我有一个逗号分隔的字符类

A = "123,456,789"

当字符类中的一项出现在字符数组中时,我正在尝试获取一个逻辑向量。

B <- as.array(c("456", "135", "789", "111"))

我正在寻找大小为 4(长度为 B)的逻辑结果

[1] TRUE FALSE TRUE FALSE

对 R 相当陌生,因此我们将不胜感激。提前致谢。

【问题讨论】:

    标签: r string match


    【解决方案1】:

    您可以使用 sapply 和 grepl 的组合,如果匹配则返回逻辑

     sapply(B, grepl, x=A)
    

    【讨论】:

    • 我会在另一个答案中使用非循环方法
    【解决方案2】:

    由于您的比较向量是用逗号分隔的,因此您可以将其用作非循环方法。

    B %in% strsplit(A, ",")[[1]]
    # [1]  TRUE FALSE  TRUE FALSE
    

    另一种循环方法是使用Vectorize 和grepl。这在内部使用mapply。

    Vectorize(grepl, USE.NAMES = FALSE)(B, A)
    # [1]  TRUE FALSE  TRUE FALSE
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-20
      • 2014-07-13
      • 1970-01-01
      • 2020-05-02
      • 1970-01-01
      • 2020-09-24
      • 2019-03-20
      • 1970-01-01
      相关资源
      最近更新 更多