我阅读了上述讨论。
我想使用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.
如何在数字前包含数字零?
答案 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
。