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

String 在R中读取空格分隔的数字,string,r,numbers,character,String,R,Numbers,Character,我在R中有这个字符串: numbers <- "4 4956 1.00e-09 50.9 1.244 47.1 1.04 5.5 0.499 13.9 0" 但正如你在上面看到的那样,它把数字弄乱了。我认为问题出在正则表达式中,但似乎我不能正确理解它,我真的对此一无所知 我感谢你的评论 您可以使用扫描: > y <- scan(con <- textConnection(numbers)) Read 11 items

我在R中有这个字符串:

numbers <- "4 4956  1.00e-09         50.9     1.244 47.1 1.04  5.5     0.499   13.9       0"
但正如你在上面看到的那样,它把数字弄乱了。我认为问题出在正则表达式中,但似乎我不能正确理解它,我真的对此一无所知


我感谢你的评论

您可以使用
扫描

> 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
>y
[1] 4.000e+004.956e+031.000e-095.090e+011.244e+004.710e+011.040e+00
[8] 5.500e+00 4.990e-01 1.390e+01 0.000e+00

“+”
表示一个或多个空格。)

有点混乱,但这应该可以解决问题:
作为.numeric(unlist(strsplit(number,\\s+))))


从内到外运行该行以查看发生了什么,
strsplit
在空格上拆分并返回一个列表,
unlist
使其成为一个字符向量,
as.numeric
转换为numeric,留下一个数值向量。

如果您仍想使用您的方式:

str_extract_all(numbers, "[\\.0-9e-]+")
要获得这些数字:

as.numeric(unlist(str_extract_all(numbers, "[\\.0-9e-]+")))

是的,这就是答案!与“扫描”和“strplit”相比,输出非常干净option@user1498689-所有四个答案的“输出”都是相同的,因此我不确定您指的是什么…请尝试运行
all.equal()
idential()
进行确认。
str_extract_all(numbers, "[\\.0-9e-]+")
as.numeric(unlist(str_extract_all(numbers, "[\\.0-9e-]+")))