2016-04-28 4 views
1

私はパイプラインの一部として値を比較(置き換え)しています。見つからない値はdata.tableにと表示されています。Rで `-1`の代わりに` -1L`を使うと危険ですか?

-9Lを比較する際に危険性はありますか?

> x <- -9 
> typeof(x) 
[1] "double" 
> 
> y <- -9L 
> typeof(y) 
[1] "integer" 

例:対

dfmelt[value == -9L, code := paste0("0", "0")] 

valueのタイプが整数の場合

dfmelt[value == -9, code := paste0("0", "0")] 
+1

'value'の型が整数の場合、これは重要ではありません。割り当てられた倍数であれば、それは問題ではありません。それが倍精度で計算の結果であれば、(浮動小数点数の精度のために)とにかく '=='を使うべきではありません。もちろん、「NA」値を数字として符号化することは、ソフトウェア設計の劣悪さの兆候です。 – Roland

+1

上記コメントと浮動小数点エラーの詳細については、[これは一見に値する](http://www.burns-stat.com/pages/Tutor/R_inferno.pdf)。 – alistaire

+0

@Rolandありがとう、答えとしてあなたのコメントを書けますか?残念なことに、ここではASCIIファイルを多く使用しています。彼らは頭痛と一緒に来る!ありがとうAlistaire、私は実際にその本の一部を既に読んできました、多分私は読書を続ける必要があります:) – Bas

答えて

1

が、これは問題ではありません。割り当てられた倍数であれば、それは問題ではありません。それが二重で計算の結果であれば、(= floating point number precisionのために)==とにかく使うべきではありません。もちろん、数値をNAという値でエンコードすることは、ソフトウェアの設計が劣っていることの兆候です。

私は、インポート時にNAに、これらの値を変換することをお勧め:

read.table(text = "1,2,-9", sep = ",", na.strings = "-9") 
# V1 V2 V3 
#1 1 2 NA 

その後、あなたはis.naを使用してこの問題を回避することができます。

関連する問題