假設我有以下字符向量
c("hi", "4", "-21", "6.5", "7. 5", "-2.2", "4h")
現在我只想提取上述向量中的有效數字:
c("4", "-21", "6.5", "-2.2")
注意:中間有一個空格。和 5 in7. 5所以不是一個有效的數字。
我正在嘗試使用此處/^-?(0|[1-9]\\d*)(\\.\\d )?$/給出的正則運算式,但沒有運氣。
那么從字符向量中提取有效數字的正則運算式是什么?
uj5u.com熱心網友回復:
as.numeric這方面已經做得很好了。任何有效數字都可以成功強制轉換為數字,其他都是NA.
x = c("hi", "4", "-21", "6.5", "7. 5", "-2.2", "4h")
y = as.numeric(x)
y = y[!is.na(y)]
y
# [1] 4.0 -21.0 6.5 -2.2
uj5u.com熱心網友回復:
我們可以使用從字串的開頭 ( ) 到結尾 ( )grep匹配數字.^$
grep("^-?[0-9.] $", v1, value = TRUE)
[1] "4" "-21" "6.5" "-2.2"
或者對于邊緣情況
grep("^[ -]?[0-9] (\\.\\d )?$", c(v1, "4.1.1"), value = TRUE)
[1] "4" "-21" "6.5" "-2.2"
grep("^[ -]?[0-9] (\\.\\d )?$", c(v1, "4.1.1", " 2.9"), value = TRUE)
[1] "4" "-21" "6.5" "-2.2" " 2.9"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/488570.html
上一篇:矩陣乘法的維數
