10

freadfrom data.tableをinteger64正しく使用すると、byステートメントがint64を正しく処理していないように見えます。私はおそらくここで何か間違ったことをしています、それは何ですか?

library(data.table); library(bit64);
test = data.table(x=c(1,2,3),y=c('x','q','q'),ID=as.integer64(c('432706205348805058','432706205348805058','432706205348805059')))

str(test) #the display is wrong (BUT IT IS EXPECTED)
#Classes ‘data.table’ and 'data.frame':  3 obs. of  3 variables:
# $ x : num  1 2 3
# $ y : chr  "x" "q" "q"
# $ ID:Class 'integer64'  num [1:3] 9.52e-280 9.52e-280 9.52e-280
# - attr(*, ".internal.selfref")=<externalptr> 

test # Here it is displayed correctly
#   x y                 ID
#1: 1 x 432706205348805058
#2: 2 q 432706205348805058
#3: 3 q 432706205348805059

txtR) test$ID
integer64
[1] 432706205348805058 432706205348805058 432706205348805059

txtR) test[,list(count=.N),by=ID] #WRRRONG
                   ID count
1: 432706205348805058     3
4

1 に答える 1

8

更新:これはv1.9.3(R-Forgeから入手可能)で実装されるようになりました。ニュースを参照してください:

o bit64::integer64グループ化と結合で機能するようになりました、#5369。UPCとClaytonStanleyを強調してくれたJamesSamsに感謝します。
注意:しばらくの間、fread()検出して読み取ることができました。integer64

上記のOPの例では:

test[, .N, by=ID]
#                    ID N
# 1: 432706205348805058 2
# 2: 432706205348805059 1

integer64またはdata.tableなどの操作にはまだ実装されていません。これは、最初のステップとしてのみ(2013年3月6日にCRANに最初にリリースされた)実装されました。たとえば、値の列として役立つ場合があります。setkeybyfread

これに関連するバグレポート(@Arunがリンクしているもの)を提出することで、問題を混乱させた可能性があります。厳密に言えば、これはバグではなく、機能のリクエストです。バグリストは「次のリリースまでに解決すべき重要なこと」のようなものだと思います。

貢献は大歓迎です。

于 2013-03-25T23:32:09.537 に答える