【发布时间】:2015-06-08 19:43:55
【问题描述】:
我在 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 加上 dplyr 才能得到错误。如果我只使用 data.table 和 readr 而不加载 dplyr,那么就没有问题。如果我在没有 readr 的情况下将数据加载到 R 中,即使加载了 readr,data.table 和 dplyr 也可以正常工作。
我显然可以解决这个问题,但想报告它。我喜欢 data.table 的语法,通常会使用 fread 来读取数据。我在这里使用 readr 是为了学习它,但也因为它能够处理日期和时间字段。我使用 dplyr 主要是因为它能够处理数据库。
最后,在几个星期没有动过这个项目后,我才再次拿起这个项目。我不记得以前出现过这个问题,还没有跟踪自那时以来哪些软件包已更新。
【问题讨论】:
-
这是在
data.table v 1.9.5- github.com/Rdatatable/data.table/issues/1078 中处理的 -
感谢您的回复,非常感谢。我确实尝试更新了所有三个包,并在 github 上看了一些,但显然还不够难。 . .干杯。
-
再次感谢您的帮助。我想说现在关闭它有点为时过早。当 data.table v 1.9.5 通过 CRAN 可用时,我可以看到关闭它。不是每个人都会在那之前下载它。因为我在工作计算机上缺乏管理员权限,所以我就是这样的人。我仍在使用 v 1.9.4。
标签: r data.table dplyr