掩盖冲突

Ryo*_*ogi 6 r data.table

加载.csvsqldf,一切都很顺利,直到我加载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中处理掩蔽冲突的最佳实践解决方案是什么?

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

Mat*_*wle 2

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

bug.report(package="data.table")
Run Code Online (Sandbox Code Playgroud)

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

编辑:

现在 R-Forge 上的 v1.6.7 版本:

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