6

私はデータのベクトルを持っています、単純化されたバージョンは以下の通りです:

x <- c("1234123xcv?","12341534xxx.","hello","goodbye")

私がやりたいのは、次のように返すことです。

"1234123" "12341534" "" ""

私はこのようなことができることを知っています。ここでは、大文字と小文字のそれぞれと、認識しているいくつかの特殊文字を手動で指定します。

grep("[A-Za-z\\?\\.]",x,value=TRUE)

しかし、必ずしも数字ではないフィールドに「else」が何であるかはわかりません。(大きすぎるため、手動で確認することはできません)

それを念頭に置いて、私の質問は次のとおりです。数字のみを返すように指定する方法はありますgsub()か?

4

6 に答える 6

11
gsub("\\D","",x) # yada yada yada
于 2012-12-22T23:08:36.880 に答える
5

角かっこ内は、そうで^はないことを意味します。つまり、これは、数字以外のものを「」に置き換えることを意味します

> gsub("[^0-9]", "", x)
[1] "1234123"  "12341534" ""         "" 
于 2012-12-22T22:54:59.130 に答える
4
gsub("[^[:digit:]]", "", x) #......
于 2012-12-22T22:56:14.833 に答える
3

次のようなものが必要です。

[^0-9]*

これは数字以外のものと一致し、どの文字を指定する必要はありません。

于 2012-12-22T22:54:44.380 に答える
2

私は言うだろう

gsub("[^0-9]+", "", x)

[^0-9] は一度に 1 文字だけを置換し、[^0-9]+ 1 つ以上を置換すると高速になります。

于 2012-12-23T11:40:04.367 に答える
0

[\d] を使用できます。数字のみを返します。

于 2012-12-22T22:56:39.600 に答える