【问题标题】:R: filter for rows in a character vector that contain strings with numbers/digitsR:过滤字符向量中包含数字/数字字符串的行
【发布时间】:2017-11-02 08:30:12
【问题描述】:

我正在寻找一种方法来过滤 R 中的字符向量。我只想保留那些包含任何数字或数字的行。不包含数字的行应该被过滤掉。完成过滤后,我想提取这些数字。我怎么能这样做?

【问题讨论】:

  • 发帖之前,我只是想确认一下。假设你有像“123”这样的字符串,你会把它过滤掉吗
  • 不,我确实想留下它。不管多少位数,我只想过滤掉不包含任何数字的行。

标签: r


【解决方案1】:

我们可以使用grep匹配一个或多个非数字(\\D+)从字符串的开头(^)到结尾($),使用value = TRUEinvert = TRUE获取与模式不匹配的元素

grep("^\\D+$", v1, value = TRUE, invert = TRUE)
#[1] "az1"  "Abc2" "123" 

或者使用

grep("\\d+", v1, value = TRUE) 
#[1] "az1"  "Abc2" "123" 

假设我们是否需要过滤掉只有数字的情况

grep("([A-Za-z].*[0-9])|[0-9].*[A-Za-z].*[0-9]", v1, value = TRUE)
#[1] "az1"  "Abc2" 

数据

v1 <- c("az1", "AB", "Abc2", "123")

【讨论】:

    猜你喜欢
    • 2016-12-08
    • 2018-09-30
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多