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

时间:2015-01-29 23:26:20

标签: regex r gsub

可能重复: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

这里输出所有数字章程,但未能得到起始数字零(&#34; 0&#34;)

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

如何在数字前包含数字零?

2 个答案:

答案 0 :(得分:4)

整数值不允许前导零。因此要拥有前导零,你必须将它们留作角色。但是,如果需要,您可以不带引号打印它们。

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()循环。

答案 1 :(得分:0)

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