【问题标题】:Count number of non-numeric characters in a string计算字符串中非数字字符的数量
【发布时间】:2021-09-28 01:31:36
【问题描述】:

如何计算R中同时包含数字和非数字字符的字符串中非数字字符的数量

例如:

c("ab34","f354","q64423","abf3")

我希望输出是:

c(2,1,1,3)

【问题讨论】:

    标签: r string count tidyverse


    【解决方案1】:

    1) gsub 用空字符串替换数字并计算剩下的内容。没有使用任何包。

    x <- c("ab34","f354","q64423","abf3")
    nchar(gsub("\\d", "", x))
    ## [1] 2 1 1 3
    

    2) gregexpr 另一种可能性是使用 gregexpr 和长度来计算非数字。我们将一个非数字附加到每个组件,以便该值永远不会为零(因为 gregexpr 在这种情况下返回 NA),然后在最后减去 1。

    lengths(gregexpr("\\D", paste0(x, "X"))) - 1
    ## [1] 2 1 1 3
    

    3) strsplit / %in% 将字符串拆分为单个字符,并将不在 0:9 中的数字相加

    sapply(strsplit(x, ""), function(x) sum(!x %in% 0:9))
    [1] 2 1 1 3
    

    4) trimws在问题的示例中,数字始终位于末尾(或者即使它们位于开头),我们可以将它们修剪掉,然后计算剩下的内容。 p>

    nchar(trimws(x, white = "\\d"))
    ## [1] 2 1 1 3
    

    5) regexpr 如果数字总是在末尾,那么我们可以使用 regexpr 找到第一个的位置。我们附加一个 0 以确保至少有一个数字并在末尾减去 1。

    c(regexpr("\\d", paste0(x, 0)) - 1)
    ## [1] 2 1 1 3
    

    【讨论】:

      猜你喜欢
      • 2017-10-20
      • 1970-01-01
      • 2021-05-28
      • 2014-04-17
      • 1970-01-01
      • 1970-01-01
      • 2018-04-20
      相关资源
      最近更新 更多