在R中读取空格分隔的数字

Ebr*_*iri 7 string numbers r character

我在R中有这个字符串:

numbers <- "4 4956  1.00e-09         50.9     1.244 47.1 1.04  5.5     0.499   13.9       0"
Run Code Online (Sandbox Code Playgroud)

我应该将数字读入矢量.现在我可以找到其他语言的相同线程,但不能在这里找到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"   
Run Code Online (Sandbox Code Playgroud)

但是如上所述,它会弄乱数字.我认为这个问题出现在正则表达式中,但似乎我无法正确理解,而且我对此毫无头绪.

我感谢任何评论.

Jos*_*ich 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
Run Code Online (Sandbox Code Playgroud)


joh*_*nes 5

如果您仍然想使用自己的方式:

str_extract_all(numbers, "[\\.0-9e-]+")
Run Code Online (Sandbox Code Playgroud)

并获得数字:

as.numeric(unlist(str_extract_all(numbers, "[\\.0-9e-]+")))
Run Code Online (Sandbox Code Playgroud)

  • @user1498689 - 所有四个答案的“输出”都是相同的,所以我不确定你指的是什么......尝试运行 `all.equal()` 或 `identical()` 来确认。 (2认同)