我在data.table(v 1.9.4),dplyr(v 0.4.1)和readr(v 0.1.1)包之间遇到明显的冲突。我在Windows 7上使用RStudio(版本0.98.1103)和R版本3.2.0。
使用以下代码将data.table加载到R时出现问题:
DT <- as.data.table(
read_csv("my_file.csv",
col_types = list(Date1 = col_date(format = "%Y/%m/%d"),
Date2 = col_date(format = "%Y/%m/%d")))
)
文件似乎加载正常,str(DT)将表格报告为:
Classes ‘tbl_df’, ‘tbl’, ‘data.table’ and 'data.frame':
然而,当尝试使用:=运算符分配值时,我收到以下错误消息:
Check that is.data.table(DT) == TRUE. Otherwise, := and `:=`(...) are defined for use in j,
once only and in particular ways. See help(":=").
所以它似乎并没有将它识别为data.table。
同样,我在尝试使用j中的.N函数来计算年份字段中的记录时出现此错误:
Error in `[.tbl_df`(DT, , .N, keyby = Date1) : unused argument (keyby = Date1)
我不是一个非常复杂的用户,所以我可能会错过一些简单的东西。我怀疑读者是因为它是最新的。然而,需要readr plus dplyr来获取错误。如果我只使用data.table和readr而不加载dplyr,那么就没有问题。如果我将数据加载到没有读取器的R中,即使加载了readr,data.table和dplyr也可以正常工作。
我显然可以解决这个问题,但想报告一下。我喜欢data.table的语法,并且通常会使用fread来读取数据。我在这里使用readr,以便学习它,还因为它能够处理日期和时间字段。我使用dplyr主要是因为它能够使用数据库。
最后,我刚刚接触了这个项目几个星期后再次接触了这个项目。我不记得之前出现过这个问题但尚未跟踪自那时以来哪些软件包已更新。
答案 0 :(得分:3)
感谢Arun指出这个问题已知,与tbl_df类有关,并将通过更新到v.1.5的data.table来修复。