【问题标题】:Matching strings across columns in R在 R 中跨列匹配字符串
【发布时间】:2010-12-11 11:01:51
【问题描述】:

我有一个包含 2 个字符列的数据框。我想找到一列包含另一列的行,但是 grepl 很奇怪。有什么想法吗?

> ( df <- data.frame(letter=c('a','b'),food = c('apple','pear','bun','beets')) )
  letter  food
1      a apple
2      b  pear
3      a   bun
4      b beets 

> grepl(df$letter,df$food)

[1]  TRUE  TRUE FALSE FALSE

但我想要T F F T

谢谢。

【问题讨论】:

    标签: r mapping


    【解决方案1】:

    感谢 Kevin 建议使用 apply,

    &gt;mapply(grepl,df$letter,df$food)

    产生所需的输出。

    【讨论】:

      【解决方案2】:

      当我运行你的代码时,我收到一个警告:

      Warning message:
      In grepl(df$letter, df$food) :
        argument 'pattern' has length > 1 and only the first element will be used
      

      这是由?greplpattern 下确认的:

      If a character vector of length 2 or more is supplied, 
      the first element is used with a warning.
      

      所以 grepl 在 apple 和 pear 中都找到了 a。这并不能解决您的问题(应用或其变体之一?),但它确实解释了您得到的输出。

      【讨论】:

      • 谢谢。显然警告是 R 版本 2.10.0 中的新警告。
      • 我正在使用:R 版本 2.10.0 已修补 (2009-10-28 r50254) x86_64-apple-darwin9.8.0
      猜你喜欢
      • 2020-06-29
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      • 2019-03-12
      • 1970-01-01
      • 1970-01-01
      • 2021-05-30
      • 1970-01-01
      相关资源
      最近更新 更多