R数据表v1.9.6中的错误 - 函数“fread”

10

我最近更新了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  

4
我的一位同事在更新data.table后也看到了这个错误。通过更新R,问题得到了解决。我应该报告这个问题,但是没有时间进行调查。 - Roland
好的,@Roland。很高兴有其他人也看到了这个问题。我的问题是我无法快速更新R(IT政策 - 哎呀!),所以我希望有其他的解决方案。 - JK_chitown
1
@user2642948,您没有提供可重现的示例。另外,请更新您的问题标题,至少指出您正在询问的函数名称。这样可以更容易地在任何未来的搜索中找到它。 - jangorecki
奇怪,今天早上我才评论了六月份的另一个问题。我以为它已经解决了,但还是提交了#1370以进行再次确认。 - Matt Dowle
你的路径中可能有两个R库,而旧版本仍然存在。我们注意到你正在使用Windows。清理旧的.dll文件并重新安装data.table。同时重启以清除僵尸进程,这些进程会锁定旧的.dll文件。我之前在Windows上也遇到过这种情况。请注意,另一个报告也是在Windows上发生的。 - Matt Dowle
显示剩余7条评论
1个回答

16
这似乎是一个更广泛的问题,也影响到其他软件包,并且在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并在其DESCRIPTION文件中设置了ByteCompile:TRUE,因此CRAN Windows二进制包似乎与R 3.2.0不兼容。我猜想,只有由于这个原因,才应该在.0版本上进行对R本身的二进制不兼容的更改,但我不确定。在安装时编译软件包(例如Ubuntu)时,这不是问题。
如果您在任何平台上使用R < 3.2.0,则不应该有问题。
如果您在任何平台上使用R >= 3.2.1,则不应该有问题。

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


1
a-ha!非常感谢您的跟进 - 直到今天我才有时间回复;已升级到R 3.2.2现在我可以回归使用data.table了。很高兴知道nchar也发生了变化..我经常使用那个函数...谢谢! - JK_chitown

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接