データフレームがある場合:
a b
2.4 4.6
3.6 66.7
5.8 44.6
Aとbはどちらも数値です。
「。」を変換したい「、」へ
df$a <- as.numeric(gsub(".", ",", df$a))
しかし、私はいつも得ます
Warning message:NAs introduced by coercion
そして、すべての値がNAに変換されます。どうして?
_.
_はどの記号にも一致するため、最初のアイデアはほぼ正しかったのですが、正規表現だけが間違っていました。次のようなものが必要です(これにより、数値ベクトルが文字ベクトルに変換されます)
_df$a <- gsub("\\.", ",", df$a)
_
また、R印刷、プロット、およびas.character関数のアクションからの出力を変更することもできます。次の方法でデフォルトから変更します。
options(OutDec= ",")
また、別のオプションはformat
関数を使用することです。
_format(df, decimal.mark=",")
_
内部的に数値は倍精度浮動小数点数として格納されるため、数値の出力(出力)方法に関心があると思います(pdate @digemallによるコメントのおかげで)。また、_read.table
_のような関数の場合、小数点記号が_,
_であると明確に指定されていない限り、デフォルトでは_,
_が関数の引数の区切りに使用されるため、それ以外のことはできません。
そして、NA
はまさにその理由で導入されました(誤った正規表現は別として)。
_df$a <- as.numeric(gsub("\\.", ",", df$a))
_
デフォルトでは、パーサーは_,
_が小数点記号として使用されていることを認識していません。
印刷にコンマのみが必要な場合は、次の形式を使用できます。
data <- data.frame(a=rnorm(5), b=rnorm(5))
format(data, decimal.mark=",")
a b
1 1,058878354 0,1812629
2 1,026163906 -0,6666500
3 1,538423889 -1,4206752
4 -0,561585916 -0,4729558
5 -0,004685406 1,0744514
ただし、これによって外観が変わるだけです。割り当てには引き続きドットを使用する必要があります。
OSXまたはWindowsを使用していますか、それとも...?
表現を変更するには、LC_NUMERIC
パラメーターを確認しますが、Rのドキュメントでは、これを変更するとRが奇妙に動作する可能性があると警告されています(リストの定義にも使用される場合、,
を10進数として使用するのは困難です)。 ...)
> Sys.getlocale("LC_NUMERIC")
[1] "C"
> a=c(1.01,2.01)
> a
[1] 1.01 2.01
> Sys.setlocale("LC_NUMERIC", "de_DE") # this is OSX syntax
> a
[1] 1,01 2,01
一緒に暮らすだけの方が安全かもしれません!