‚0.10
のように、数値の前にコンマが付いた値があります。私はgsub(",", "", "‚0.10")
を試してみました0.10
後ろのコンマの見た目が単純に削除されない
のような番号を取得するには、末尾,
を削除したいのですが、コンマは削除されません。何がここで起こっているアイデアですか?私はあなたの交換が失敗した理由は、それにもかかわらず、単に「動作するはず」だと思う
gsub(",", "", "‚0.10")
# [1] "‚0.10"
おかげ
‚0.10
のように、数値の前にコンマが付いた値があります。私はgsub(",", "", "‚0.10")
を試してみました0.10
後ろのコンマの見た目が単純に削除されない
のような番号を取得するには、末尾,
を削除したいのですが、コンマは削除されません。何がここで起こっているアイデアですか?私はあなたの交換が失敗した理由は、それにもかかわらず、単に「動作するはず」だと思う
gsub(",", "", "‚0.10")
# [1] "‚0.10"
おかげ
、x
に潜ん制御文字があるということです。私はコピー&ペースト場合pattern
をOPから、一方
gsub(pattern = ",", replacement = "", x = "‚0.10")
# [1] "‚0.10"
が、タイプx
中:
私はOPから両方pattern
とx
をコピー&ペーストした場合は、問題が再現されます私の編集者、私は望みの結果を得ます:
gsub(pattern = ",", replacement = "", x = ",0.10")
# [1] "0.10"
従って、2つのコールはですがsと同じですが、その結果は異なります。
そして、制御文字([:cntrl:]
)を探すためにgrepl
を使用します。
# copy-paste x from OP
grepl(pattern = "[[:cntrl:]]", x = "‚0.10")
# [1] TRUE
# type in x in editor
> grepl(pattern = "[[:cntrl:]]", x = ",0.10")
# [1] FALSE
確かに、元x
内(とないI型x
で)何かがあります。
stringi::stri_unescape_unicode
を使用して、そこに何が隠れているのかを確認できます。ここでも、OPから文字列をコピー&ペーストは:
library(stringi)
stri_unescape_unicode(str = "‚0.10")
# [1] "\u00820.10"
を元"‚0.10"
で,
がnormal ,
のように見えますが、それはどのトリック私たちUnicode Character 'BREAK PERMITTED HERE' (U+0082)カンマです。
これは、上流に固定することができない場合はこのように、あなたが使用することができます:
gsub(pattern = "[[:cntrl:]]", replacement = "", x = "‚0.10")
# "0.10"
テストにいくつかのデータを入力してください。 – Jan
あなたの列が要素変数であれば動作しません。 'gsub("、 "、" "、as.character(x))' –