integer64
これが(からbit64
)問題なのか、メルト問題(から)なのかわかりませんが、reshape2
integer64データを含むdata.frameを再形成しようとすると、クラス情報がプロセスで破棄され、double表現に戻ります。 :
library(bit64)
library(reshape2)
DF = data.frame(I =letters, Num1 = as.integer64(1:26), Num2 = as.integer64(1:26))
DFM = melt(DF, id.vars = "I")
sapply(DF, class)
sapply(DFM, class)
与える:
> sapply(DF, class)
I Num1 Num2
"factor" "integer64" "integer64"
> sapply(DFM, class)
I variable value
"factor" "factor" "numeric"
また、integer64はその下が二重であるため、データは「破損」しています。
> DF
I Num1 Num2
1 a 1 1
2 b 2 2
3 c 3 3
4 d 4 4
5 e 5 5
...
> DFM
I variable value
1 a Num1 4.940656e-324
2 b Num1 9.881313e-324
3 c Num1 1.482197e-323
4 d Num1 1.976263e-323
5 e Num1 2.470328e-323
6 f Num1 2.964394e-323
これを引き起こしているのは何ですか?これは問題ですかinteger64
、それともmelt
問題ですか?クラスを作成するとき、この種のことを避けるために何ができるでしょうか?