加载.csv时sqldf,一切都很顺利,直到我加载data.table.例如:
library(sqldf)
write.table(trees, file="trees.csv", row.names=FALSE, col.names=FALSE, sep=",")
my.df <- read.csv.sql("trees.csv", "select * from file",
header = FALSE, row.names = FALSE)
Run Code Online (Sandbox Code Playgroud)
工作,而
library(data.table)
my.df <- read.csv.sql("trees.csv", "select * from file",
header = FALSE, row.names = FALSE)
# Error in list(...)[[1]] : subscript out of bounds
Run Code Online (Sandbox Code Playgroud)
不.加载后,data.table通知您
The following object(s) are masked from 'package:base':
cbind, rbind
Run Code Online (Sandbox Code Playgroud)
所以,我试过这个
rbind <- base::rbind # `unmask` rbind from base::
library(data.table)
my.df <- read.csv.sql("trees.csv", "select * from file",
header = FALSE, row.names = FALSE)
rbind <- data.table::rbind # `mask` rbind with data.table::rbind
Run Code Online (Sandbox Code Playgroud)
哪个有效.在我用这个技巧丢弃所有代码之前:
在R中处理掩蔽冲突的最佳实践解决方案是什么?
编辑:有一个密切相关的线程在这里,但没有通用的解决方案建议.
根据评论,是的,请提交错误报告:
bug.report(package="data.table")
Run Code Online (Sandbox Code Playgroud)
这样就不会被忘记,每次状态更改时您都会收到一封自动电子邮件,如果修复证明不充分,您可以重新打开它。
编辑:
现在 R-Forge 上的 v1.6.7 版本:
do.call("rbind",...)空...)的兼容性并添加了测试。data.table 正在打开list(...)[[1]]而不是..1. 感谢 RYogi 报告#1623。