sta*_*ant 10 r data.table
正确使用freaddata.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
Run Code Online (Sandbox Code Playgroud)
o
bit64::integer64现在可以分组和加入,#5369.感谢James Sams突出UPC和Clayton Stanley.
提醒:fread()已经能够检测并阅读integer64一段时间了.
在OP的例子上面:
test[, .N, by=ID]
# ID N
# 1: 432706205348805058 2
# 2: 432706205348805059 1
Run Code Online (Sandbox Code Playgroud)
integer64还没有为data.table诸如setkey或之类的操作实施by.它fread仅作为第一步实施(2013年3月6日首次发布到CRAN).例如,它可以用作值列.
我可能通过提交与此相关的错误报告(@Arun链接到的那个)来混淆问题.严格来说,它不是一个bug而是一个功能请求.我认为错误列表更像是"下一个版本之前要解决的重要事项".
贡献非常受欢迎.