data.table行数>100时raw类型打印报错,是否为未修复Bug?
data.table中raw类型列print报错的问题
没错,这大概率是一个未被完全修复的边缘场景Bug。虽然之前针对行数超过100时的打印报错问题已经修复,但data.table的自定义print逻辑在处理raw类型列时,显然还存在疏漏——从你遇到的Error in rbindlist(l, use.names, fill, idcol) : Unsupported column type 'raw'报错就能看出来,print方法内部调用rbindlist时没有处理好raw类型的列。
快速复现验证
你可以用这段代码快速确认问题:
library(data.table) # 构造包含raw列且行数>100的data.table dt <- data.table(raw_col = as.raw(1:101)) print(dt)
运行后应该会复现你提到的报错,这说明问题确实存在于1.10.4-3版本中。
临时绕过方案
如果需要临时解决这个问题,有两个简单的办法:
- 转换raw列为可打印类型:把raw列转成十六进制字符串后再打印
dt[, raw_hex := as.character(raw_col)] print(dt[, .(raw_hex)]) - 使用base R的print方法:绕过data.table的自定义print逻辑,直接用基础包的print函数
base::print(dt)
后续建议
这个问题应该反馈给data.table的开发团队,你可以在他们的官方代码仓库提交Issue,附上复现代码、你的版本信息,以及这个报错的具体场景(仅raw类型列触发)。这样开发者能更快定位并修复这个边缘场景的问题。
内容的提问来源于stack exchange,提问作者Gerry
相关产品推荐
相关产品推荐

