从data.table正确使用fread加载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发布于 2013-03-26 07:32:10
更新:现在v1.9.3 (可从R-Forge获得)中实现了这一点,请参阅NEWS:
o
bit64::integer64现在在分组和连接中工作,#5369。感谢James Sams强调了UPC和Clayton Stanley。
提醒:fread()能够检测和读取integer64已经有一段时间了。
在上面的OP示例中:
test[, .N, by=ID]
# ID N
# 1: 432706205348805058 2
# 2: 432706205348805059 1integer64还没有为data.table操作实现,比如setkey或by。作为第一步,它只是在fread中实现(2013年3月6日首次发布到CRAN )。例如,它可以用作值列。
我提交了一份与此相关的bug报告( @Arun链接到的那个),可能把事情搞混了。严格地说,这不是一个bug,而是一个特性请求。我认为bug列表更像是“在下一次发布之前要解决的重要事情”。
非常欢迎您的贡献。
https://stackoverflow.com/questions/15614846
复制相似问题