首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >data.table未在by语句中处理integer64

data.table未在by语句中处理integer64
EN

Stack Overflow用户
提问于 2013-03-25 20:22:30
回答 1查看 2.6K关注 0票数 10

从data.table正确使用fread加载integer64,尽管我感觉by语句没有正确地处理int64。我可能做错了什么,是什么?

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-26 07:32:10

更新:现在v1.9.3 (可从R-Forge获得)中实现了这一点,请参阅NEWS

o bit64::integer64现在在分组和连接中工作,#5369。感谢James Sams强调了UPC和Clayton Stanley。

提醒:fread()能够检测和读取integer64已经有一段时间了。

在上面的OP示例中:

代码语言:javascript
复制
test[, .N, by=ID]
#                    ID N
# 1: 432706205348805058 2
# 2: 432706205348805059 1

integer64还没有为data.table操作实现,比如setkeyby。作为第一步,它只是在fread中实现(2013年3月6日首次发布到CRAN )。例如,它可以用作值列。

我提交了一份与此相关的bug报告( @Arun链接到的那个),可能把事情搞混了。严格地说,这不是一个bug,而是一个特性请求。我认为bug列表更像是“在下一次发布之前要解决的重要事情”。

非常欢迎您的贡献。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15614846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档