计算字符串中非数字字符的数量

时间:2021-07-20 14:20:07

标签: r string count tidyverse

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

例如:

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

我希望输出为:

c(2,1,1,3)

1 个答案:

答案 0 :(得分:0)

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 在问题的例子中,数字总是在末尾(或者即使它们在开头),我们可以将它们修剪掉,然后计算剩下的数字。 >

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
相关问题