使用.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)
有效,而
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
不。加载后,data.table
会通知您
The following object(s) are masked from 'package:base':
cbind, rbind
所以,我试过这个
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
哪个有效。在我用这个技巧丢弃所有代码之前:
在R中处理掩码冲突的最佳实践解决方案是什么?
编辑:有一个密切相关的帖子here,但没有提出一般解决方案。
答案 0 :(得分:2)
根据评论,是的,请提交错误报告:
bug.report(package="data.table")
这样它就不会被遗忘,每次状态发生变化时,您都会收到一封自动发送的电子邮件,如果修复程序证明不足,您可以重新打开它。
编辑:
现在在R-Forge的v1.6.7中:
do.call("rbind",...)
上调用...
)的兼容性并添加了测试。 data.table正在启用list(...)[[1]]
而不是..1
。感谢RYogi报告#1623。