从 R 中的字母数字字符串中获取数字字符?

Get the numeric characters from alphanumeric string in R?

可能重复:1 2

我看了上面的讨论。

我想使用 R 从字母数字字符串中获取所有数字字符?

我的代码:

   > y <- c()
   > x <- c("wXYz04516", "XYz24060", "AB04512", "wCz04110", "wXYz04514", "wXYz04110")
   > for (i in 1:length(x)){
   +       y <- c(as.numeric(gsub("[a-zA-Z]", "", x[i])),y)
   + }
   > print (y)

[1]  4110  4514  4110  4512 24060  4516

这里输出了所有的数字章程,但是没有得到起始数字零(“0”)

   The output omits starting Zero ("0") digit in case of 4110,  4514,  4110, 4512, and  4516.

如何在数字前添加数字零?

整数值不允许有前导零。所以要有前导零,你必须将它们保留为字符。但是,如果需要,您可以不带引号打印它们。

x <- c("wXYz04516", "XYz24060", "AB04512", "wCz04110", "wXYz04514")

gsub("\D+", "", x)
# [1] "04516" "24060" "04512" "04110" "04514"

as.numeric(gsub("\D+", "", x))
# [1]  4516 24060  4512  4110  4514

print(gsub("\D+", "", x), quote = FALSE)
# [1] 04516 24060 04512 04110 04514

所以最后一个看起来像一个数字,但实际上是一个字符。

旁注: gsub()as.numeric() 都是向量化函数,因此在此操作中也不需要 for() 循环.

如果您想要前导零,则需要创建一个字符向量而不是数字一,因此将 as.numeric 更改为 as.character