7

私は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"   

しかし、あなたが上で見ることができるように、それは数を台無しにします。問題は正規表現にあると思いますが、正しく理解できないようで、実際にはその手がかりがありません。

コメントありがとうございます。

4

4 に答える 4

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
于 2012-07-03T14:06:21.233 に答える
5

それでも自分のやり方を使いたい場合:

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

と数字を取得するには:

as.numeric(unlist(str_extract_all(numbers, "[\\.0-9e-]+")))
于 2012-07-03T14:12:10.273 に答える
2
as.numeric(strsplit(numbers,split=" +")[[1]])->numbers

" +"1つ以上のスペースを意味します。)

于 2012-07-03T14:07:17.933 に答える
2

少し厄介ですが、これでうまくいくはずです:as.numeric(unlist(strsplit(numbers, "\\s+")))

行を裏返しに実行して、何が起こっているかを確認し、strsplitスペースで分割してリストを返し、unlistそれを文字ベクトルにし、数値にas.numeric変換して数値ベクトルを残します。

于 2012-07-03T14:10:00.923 に答える