【问题标题】:How to remove only "actual numbers" from a string of characters in R如何从R中的字符串中仅删除“实际数字”
【发布时间】:2014-03-06 08:56:47
【问题描述】:

我有一串数字和字符

c2 = "list of 2nd C2 H2O 1 12 123"

我需要删除所有实际数字,即 1、12、123,但不是字符集的一部分,即 2nd、C2、H2O。

到目前为止,我想出的最好的解决方案就是这个

gsub("? [[:digit:]]*", " ", c2)
"list of nd C2 H2O   "

它成功去除了 1 12 123,同时保留了 C2 H2O。但是,我在第 2 名中输了 2 名。

我已经束手无策了。

谢谢!

【问题讨论】:

    标签: regex r numbers character gsub


    【解决方案1】:

    试试这个:

    > gsub("\\b\\d+\\b", "", c2)
    [1] "list of 2nd C2 H2O   "
    

    【讨论】:

    • 它就像魔术一样工作。我以为 \\b\\d+\\b 表示空白+数字+空白。但是 123 并没有以空格结尾(我错了吗?)。为什么它也被删除了?
    • "\\b" 表示边界,不是空白。
    【解决方案2】:

    这是一种不需要正则表达式的古怪方法:

    Rgames> c2 = "list of 2nd C2 H2O 1 12 123"
    Rgames> sc2<-unlist(strsplit(c2,' '))
    Rgames> nc2<-as.numeric(sc2)
    Warning message:
    NAs introduced by coercion 
    Rgames> ssc2<-paste(sc2[is.na(nc2)])
    Rgames> ssc2
    [1] "list" "of"   "2nd"  "C2"   "H2O" 
    

    如果需要,可以paste 生成单个字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-06
      • 2021-12-06
      • 1970-01-01
      相关资源
      最近更新 更多