我遇到了data.table (v1.9.4)、dplyr (v0.4.1)和readr (v0.1.1)包之间的明显冲突。我在Windows7上使用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,因为它是最新的。然而,需要readr加上dplyr才能得到错误。如果我只使用data.table和readr而不加载dplyr,那么就不会有问题。如果我在不使用readr的情况下将数据加载到R中,即使加载了readr,data.table和dplyr也可以很好地协同工作。
我显然可以解决这个问题,但我想报告它。我喜欢data.table的语法,通常会使用fread来读取数据。我之所以在这里使用readr,是为了学习它,但也是因为它能够处理日期和时间字段。我使用dplyr主要是因为它具有处理数据库的能力。
最后,我把这个项目放了几个星期,然后又重新开始了。我不记得以前出现过这个问题,也没有跟踪过自那时以来哪些包进行了更新。
发布于 2015-06-09 05:32:14
感谢Arun指出这个问题是已知的,与tbl_df类有关,并将在data.table 1.9.5版本的更新中修复。
https://stackoverflow.com/questions/30717739
复制相似问题