Ошибка в R data.table v1.9.6 - функция fread

Недавно я обновился до 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  

person JK_chitown    schedule 02.10.2015    source источник
comment
Один из моих коллег тоже увидел эту ошибку после обновления data.table. Это было исправлено путем обновления R. Вероятно, мне следовало сообщить об этом, но у меня не было времени на расследование.   -  person Roland    schedule 02.10.2015
comment
Хорошо, хорошо, @Roland - я рад, что кто-то еще это видит - моя проблема в том, что я не могу обновить R достаточно быстро (ИТ-политика - аааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааа R) поэтому я надеялся, что есть какое-то другое решение.   -  person JK_chitown    schedule 02.10.2015
comment
@ user2642948 Вы не привели воспроизводимый пример. Также, пожалуйста, обновите заголовок вашего вопроса, указав хотя бы имя функции, о которой вы спрашиваете. Таким образом, его будет легче найти для любых будущих поисков.   -  person jangorecki    schedule 02.10.2015
comment
Странный. Я только сегодня утром прокомментировал другой вопрос от июня. Я решил, что это было исправлено, но подал #1370, чтобы перепроверить.   -  person Matt Dowle    schedule 02.10.2015
comment
Возможно ли, что у вас есть 2 R-библиотеки на вашем пути, и почему-то старая версия все еще ковыряется. Мы заметили, что вы используете Windows. Очистите старую .dll и переустановите data.table. Также перезагрузитесь, чтобы очистить зомби-процессы, блокирующие старую .dll. Я видел это раньше в Windows. Обратите внимание, что другой отчет также был Windows.   -  person Matt Dowle    schedule 02.10.2015
comment
stackoverflow.com/questions/31142280 /   -  person Matt Dowle    schedule 02.10.2015
comment
@MattDowle - Спасибо - я перезагрузился, переустановил R 3.2.0 (удалив все, включая оставшийся каталог библиотеки), но я все еще получаю сообщение об ошибке. Я буду продолжать в том же духе - и да, Windows... никогда не было проблем с моим Linux-компьютером дома....   -  person JK_chitown    schedule 02.10.2015
comment
Спасибо за обновление. Это действительно странно. Я в растерянности тогда. Что-нибудь в вашем .Rprofile собирает какую-то другую библиотеку? Проверено .libPaths()? Я предполагаю, что существует реальная проблема, которая проявляется только в Windows. Но это работает для других людей в Windows (и в win-builder), поэтому между вами и ими есть некоторая разница.   -  person Matt Dowle    schedule 03.10.2015
comment
Может быть, это что-то в вашем файле Aug14.csv; например это работает с тривиальным файлом? Если это так, запустите снова с verbose=TRUE и сообщите результат. Может быть, это проблема только fread, только с этим файлом и, возможно, только с окнами. Что возвращает test.data.table()?   -  person Matt Dowle    schedule 03.10.2015
comment
@MattDowle: вот что я получаю с помощью test.data.table():   -  person JK_chitown    schedule 06.10.2015
comment
Спасибо. Пожалуйста, введите nchar в командной строке. Это вызов с 4 аргументами: .Internal(nchar(x, type, allowNA, keepNA)) и возвращает ли find("nchar") "package:base"?   -  person Matt Dowle    schedule 06.10.2015


Ответы (1)


Похоже, это более широкая проблема, затрагивающая и другие пакеты, и что-то подобное было поднято на r-devel здесь:

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

Если я правильно понимаю, CRAN предоставляет один двоичный файл Windows для серии R 3.2.*. Я предполагаю, что этот двоичный файл построен с использованием последней версии R из этой серии, в настоящее время R 3.2.2. Как отметил Андрей Т. в комментарии здесь, базовая функция R nchar получила дополнительный аргумент в R 3.2.1. Поскольку data.table использует функцию R nchar и устанавливает ByteCompile:TRUE в своем файле DESCRIPTION, двоичный пакет CRAN для Windows не совместим с R 3.2.0. Я предполагаю, что бинарные несовместимые изменения в самом R должны быть внесены в версию .0 только по этой причине, но я не уверен в этом. Там, где пакеты компилируются при установке (например, Ubuntu), это не проблема.

Если вы используете R ‹ 3.2.0 на любой платформе, проблем быть не должно.

Если вы используете R >= 3.2.1 на любой платформе, проблем быть не должно.

Если вы используете R 3.2.0 в Windows и устанавливаете двоичный .zip из CRAN (т. е. метод по умолчанию), вам необходимо либо обновиться до R >= 3.2.1, либо создать data.table (и, возможно, любой другой пакет, использующий nchar, который также устанавливает ByteCompile:TRUE) самостоятельно, используя Rtools.

person Matt Dowle    schedule 05.10.2015
comment
Ага! Большое спасибо за продолжение - я не мог вернуться к этому до сегодняшнего дня; обновился до R 3.2.2, и теперь я вернулся к совершенству data.table. Приятно знать, что nchar тоже изменился... Я немного использую эту функцию... Спасибо! - person JK_chitown; 06.10.2015