我在R:
中有这个字符串numbers <- "4 4956 1.00e-09 50.9 1.244 47.1 1.04 5.5 0.499 13.9 0"
我应该将数字读入矢量。 现在我可以找到其他语言相同的线程,但不能在这里找到R.我试过了:
library(stringr)
str_extract_all(numbers, "[0-9]+")
[[1]]
[1] "4" "4956" "1" "00" "09" "50" "9" "1" "244" "47" "1"
[12] "1" "04" "5" "5" "0" "499" "13" "9" "0"
但是如上所述,它会弄乱数字。我认为这个问题出现在正则表达式中,但似乎我无法正确理解,而且我对此毫无头绪。
我感谢任何评论。
答案 0 :(得分:8)
您可以使用scan
:
> y <- scan(con <- textConnection(numbers))
Read 11 items
> close(con)
> y
[1] 4.000e+00 4.956e+03 1.000e-09 5.090e+01 1.244e+00 4.710e+01 1.040e+00
[8] 5.500e+00 4.990e-01 1.390e+01 0.000e+00
答案 1 :(得分:4)
如果您仍想使用自己的方式:
str_extract_all(numbers, "[\\.0-9e-]+")
并获取数字:
as.numeric(unlist(str_extract_all(numbers, "[\\.0-9e-]+")))
答案 2 :(得分:2)
as.numeric(strsplit(numbers,split=" +")[[1]])->numbers
(" +"
表示一个或多个空格。)
答案 3 :(得分:2)
有点乱,但这应该可以解决问题:as.numeric(unlist(strsplit(numbers, "\\s+")))
在里面运行该行,看看发生了什么,strsplit
拆分空格并返回一个列表,unlist
使其成为一个字符向量,as.numeric
转换为数字,离开你数字向量。