R data.table v1.9.6 中的错误 - 函数“fread”

Posted

技术标签:

【中文标题】R data.table v1.9.6 中的错误 - 函数“fread”【英文标题】:Error in R data.table v1.9.6 - function "fread" 【发布时间】:2015-12-30 23:09:35 【问题描述】:

我最近更新到data.table 1.9.6,使用fread时出现如下错误:

 fread("Aug14.csv")
Error in fread("Aug14.csv") : 
  4 arguments passed to .Internal(nchar) which requires 3

另一个帖子在另一个上下文中讨论了这个错误,但在升级到 data.table 1.9.6 之前它工作得很好。有什么建议吗?

这是我的设置:

sessionInfo()
R version 3.2.0 (2015-04-16)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] data.table_1.9.6 Matrix_1.2-2    

loaded via a namespace (and not attached):
[1] modeltools_0.2-21 tools_3.2.0       splines_3.2.0     grid_3.2.0        chron_2.3-47      stats4_3.2.0      lattice_0.20-33  

【问题讨论】:

我的一位同事在更新 data.table 后也看到了这个错误。它已通过更新 R 修复。我可能应该报告它,但没有时间调查。 好吧@Roland - 我很高兴其他人看到了这个 - 我的问题是我更新 R 的速度不够快(IT 政策 - 啊!)所以我希望有其他解决方案. @user2642948 您没有提供可重现的示例。另外请更新您的问题的标题,至少指向您所询问的功能名称。这样可以更轻松地找到任何未来的搜索。 奇数。我今天早上才评论了六月的另一个问题。我认为它已修复,但提交 #1370 以进行仔细检查。 您的路径中是否有可能有 2 个 R 库,并且不知何故旧版本仍在运行。我们注意到您使用的是 Windows。清除旧的 .dll 并重新安装 data.table。还要重新启动以清除锁定旧 .dll 的僵尸进程。我以前在 Windows 上看到过。请注意,另一个报告也是 Windows 【参考方案1】:

这似乎是一个影响其他软件包的更广泛的问题,并且在 r-devel 上提出了类似的问题:

http://r.789695.n4.nabble.com/Error-generated-by-Internal-nchar-disappears-when-debugging-td4713138.html

如果我理解正确,CRAN 为 R 3.2.* 系列提供了一个 Windows 二进制文件。我猜这个二进制文件是使用该系列中最新版本的 R 构建的,目前是 R 3.2.2。正如 Andriy T. 在评论 here 中指出的那样,基本 R 函数 nchar 在 R 3.2.1 中获得了额外的参数。由于 data.table 使用 R 函数 nchar 并在其说明文件中设置 ByteCompile:TRUE,Windows 的 CRAN 二进制包似乎与 R 3.2.0 不兼容。我猜想对 R 本身的二进制不兼容更改应该仅出于这个原因对 .0 版本进行,但我不确定。在安装时编译包的地方(例如 Ubuntu)这不是问题。

如果您在任何平台上使用 R

如果您在任何平台上使用 R >= 3.2.1,应该没有问题。

如果您在 Windows 上使用 R 3.2.0 并从 CRAN 安装二进制 .zip(即默认方法),那么您需要升级到 R >= 3.2.1,或者构建 data.table (以及可能使用nchar 的任何其他包,也可能使用Rtools 设置ByteCompile:TRUE)。

【讨论】:

啊哈!非常感谢您的跟进——直到今天我才能回到这个话题;升级到 R 3.2.2,现在我又回到了 data.table 中。很高兴知道nchar 也发生了变化..我有点使用该功能...谢谢!

以上是关于R data.table v1.9.6 中的错误 - 函数“fread”的主要内容,如果未能解决你的问题,请参考以下文章

data.table中的R rowsum崩溃R.

如果名称按组的顺序不同,R data.table 分组操作返回错误值?

如何计算 R 中 data.table 中的出现组合

R:data.table 中的透视和小计?

滚动连接R中的data.table

如何使用 R 交换 data.table 中的列值