6

加载.csvwith 时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 中的屏蔽冲突的最佳实践解决方案是什么?

编辑:这里有一个密切相关的线程,但没有建议通用的解决方案。

4

1 回答 1

2

根据评论,是的,请提交错误报告:

bug.report(package="data.table")

这样它就不会被遗忘,每次状态更改时您都会收到一封自动电子邮件,如果修复证明不足,您可以重新打开它。

编辑:

现在在 R-Forge 上的 v1.6.7 中:

  • 与包 sqldf(可以调用do.call("rbind",...)...)的兼容性已修复并添加了测试。data.table 正在打开list(...)[[1]]而不是..1. 感谢 RYogi 报告 #1623。
于 2011-10-17T12:59:52.860 回答