3

文字列のリストがあり、その一部にはドルの数字が含まれています。例えば:

'$34232 foo    \n  bar'

[r]金額が含まれている文字列のみを返すことができるコマンドはありますか?

ありがとうございました!

4

2 に答える 2

4

それ以外の場合は「文字列の終わり」を意味する\\$を保護するために使用します。$

   grep("\\$[0-9]+",c("123","$567","abc $57","$abc"),value=TRUE)

これにより、ドル記号の後に1つ以上の数字が続く文字列が選択されます(ただし、例ではありません$abc)。 grepwithvalue=FALSEはインデックスを返します。grepl論理ベクトルを返します。R固有のポイントの1つは、指定する必要があるということです\\$\$つまり、保護のために追加のバックスラッシュが必要です)。\$「認識されないエスケープ」エラーが発生します。

@Cerbrusの答え、、'\\$[0-9,.]+'は少し広く一致します(たとえば、$456.89またはに一致し$367,245,100ます)。$45.13.89また、 orなどのいくつかの信じられない通貨文字列にも一致し$467.43,2,1ます(つまり、ドルセグメントの3桁のグループにはコンマのみを許可する必要があり、ドルとセントを区切る小数点は1つだけにする必要があります)。私たちの答えは両方とも(間違って?)一致し$45abcます。運が良ければ、データにはこれらのトリッキーな可能性は含まれていません。一般的にこれを正しく行うのは難しいです。コメントで言及されている回答(「最高の」米国通貨正規表現とは何ですか?)はこれを行おうとします。その結果、回答はかなり複雑になりますが、保護することで回答をRに適合させると便利です。$適切に。

于 2013-01-04T15:12:57.260 に答える
3

確かにあります:

'\\$[0-9,.]+'

\\$ //Dollar sign
[0-9,.]+ // One or more numbers, dots, or comma's.
于 2013-01-04T15:15:34.177 に答える