一个接一个地加载 Data.Table 和 dplyr 会出错
Posted
技术标签:
【中文标题】一个接一个地加载 Data.Table 和 dplyr 会出错【英文标题】:Loading Data.Table and dplyr one after other gives errors 【发布时间】:2015-07-26 20:28:29 【问题描述】:我遇到了一个以前没有遇到过的问题。当我单独加载 data.table 包(版本 1.9.4),然后尝试对数据集进行子集化以删除变量时,我没有遇到任何问题。但是,当我也加载 plyr (version 1.8.2) 和 dplyr (version 0.4.1) 时,我收到以下错误(使用玩具数据集尝试相同)以及)。请注意,原始文件在 Excel 中,我使用 library(readxl) 将文件读入 RData 文件格式(文件 vahere.RData 可在此处获得 (https://goo.gl/kzI5bD)。文件为三个变量 - LINK_ID(数字)、TMC(字符)、MPORegion(字符)。我得到的错误是:
Error in `[.tbl_df`(x, r, vars, with = FALSE) :
unused argument (with = FALSE)
我不记得以前遇到过这个错误。如果有人对正在发生的事情有任何见解,我将不胜感激。我在两台不同的机器(Windows 7)上尝试了它并得到了同样的错误。两台机器的 Sys.Info 如下:
Machine 1 - sysname "Windows", release "7 x64", version "build 7601, Service Pack 1", machine "x86-64"
Machine 2 - sysname "Windows", release "7 x64", version "build 7601, Service Pack 1", machine "x86-64"
以下是跑步的历史。
> library(data.table)
data.table 1.9.4 For help type: ?data.table
*** NB: by=.EACHI is now explicit. See README to restore previous behaviour.
> load("vahere.RData")
> vahere[is.na(vahere)] <- "RestofVA"
> vahere <- setDT(vahere)
>
> # Drop link id and identify unique tmc to region
> uniqtmcs <- subset(vahere,select=-c(1))
> library(plyr)
> library(dplyr)
Attaching package: ‘dplyr’
The following objects are masked from ‘package:plyr’:
arrange, count, desc, failwith, id,
mutate, rename, summarise, summarize
The following objects are masked from ‘package:data.table’:
between, last
The following object is masked from ‘package:stats’:
filter
The following objects are masked from ‘package:base’:
intersect, setdiff, setequal, union
> rm(vahere)
> load("vahere.RData")
> vahere[is.na(vahere)] <- "RestofVA"
> vahere <- setDT(vahere)
>
> # Drop link id and identify unique tmc to region
> uniqtmcs <- subset(vahere,select=-c(1))
Error in `[.tbl_df`(x, r, vars, with = FALSE) :
unused argument (with = FALSE)
【问题讨论】:
顺便说一下,只使用setDT(vahere)
不要<-
分配结果。如果我们知道vahere
的开头可能会更清楚。一般来说,data.table
对象比subset
有更好的子集方法...
我也看到了错误。如果您查看getAnywhere(`subset.data.table`)
,您会看到ans <- x[r, vars, with = FALSE]
行。这调用了[
,认为data.table
语法会起作用,但它实际上不符合[.tbl_df
(来自dplyr),它没有with
参数。 (我是说这是一个错误,因为这些东西应该一起玩得很好。)
也许不是错误。我收到警告说您的数据在 setDT
之后“已损坏”,并且无法使用正常数据重现它。
这是一个损坏的文件,现在读取文件没有问题。
dplyr
和 data.table
表现出这种不一致是相当有趣的。我认为dplyr
旨在将 data.table 作为后端?
【参考方案1】:
输入文件已损坏,我很抱歉在论坛上发帖。我没有收到有关文件已损坏并与另一个玩具数据集一起运行的任何警告,给出了完全相同的错误。
【讨论】:
以上是关于一个接一个地加载 Data.Table 和 dplyr 会出错的主要内容,如果未能解决你的问题,请参考以下文章
使用 R expss 和 data.table 是不是可以从 csv 文件加载 data.table 标签,而不是手动输入代码?
如何使用 data.table 有效地计算坐标对之间的距离:=