问题描述
正确使用data.table加载 integer64 中的 fread ,虽然我有这样的印象: by 语句不能正确处理int64。
我可能在这里做错了什么,是什么?
Using fread from data.table load integer64 correctly, though I have the impression that by statements are not handling int64 correctly.I am probably doing someting wrong here, what is it ?
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
推荐答案
更新:现在在v1.9.3(可从R-Forge获得)中实现,参见:
Update: This is now implemented in v1.9.3 (available from R-Forge), see NEWS :
在上面的OP示例上:
test[, .N, by=ID] # ID N # 1: 432706205348805058 2 # 2: 432706205348805059 1
integer64 $ c $对于 data.table 操作尚未实现 setkey 或 / code>。它只是在 fread 中实现(首先于2013年3月6日发布到CRAN)作为第一步。例如,它可以用作值列。
integer64 isn't yet implemented for data.table operations such as setkey or by. It was just implemented in fread only (first released to CRAN on 6 March 2013) as a first step. It could be useful as a value column for example.
我可能通过提交与此相关的错误报告(@Arun链接到的)来混淆事情。严格地说,它不是一个错误,而是一个功能请求。我认为错误列表更像是在下一个版本之前解决的重要事情。
I may have confused matters by filing a bug report relating to this (the one @Arun linked to). Strictly speaking, it isn't a bug but a feature request. I think of the bug list more like 'important things to resolve before the next release'.
非常欢迎这些贡献。
这篇关于data.table不处理integer64 in by语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!