Ошибка XLConnect 'envir'

Я управляю несколькими отчетами Excel и использую R для предварительной обработки и написания выходного отчета. Это здорово, потому что все, что мне нужно сделать, это запустить функцию R и раздать отчеты, а остальная часть написания отчета — это неактивное время. Отчеты должны быть в формате Excel, потому что его проще всего распространять, а аудитория большая и нетехническая. После предварительной обработки данных я делаю это очень просто, используя XLConnect:

file.copy(from = template,
          to = newFileName)

writeWorksheetToFile(file = newFileName,
                     data = newData,
                     sheet = "Data",
                     clearSheets = T)

Однако один из моих отчетов начал выдавать эту ошибку, когда я попытался записать новые данные:

Error in ls(envir = envir, all.names = private) : 
invalid 'envir' argument

Кроме того, прежде чем выдать ошибку, функция привязывает R на 15 минут. Обычное время записи составляет менее 10 секунд. Должен признаться, я даже не понимаю, что означает эта ошибка, и она не поддалась моим обычным методам отладки или любому другому решению SO.

Я заметил, что другие ссылались на rJava (переустановка этого пакета не сработала) и на кэш файлов журналов Java (не уверен, где он будет расположен на Mac). Я особенно сбит с толку, поскольку отчет работал без проблем всего днем ​​​​ранее с использованием точно такого же процесса, И мои другие отчеты, использующие точно такой же процесс, все еще работают нормально.

Я не обновлял Java, R или свою ОС, не отлаживал и не переписывал код R. Итак, начнем с самого начала - как я могу исследовать эту ошибку "envir"? Что бы вы сделали, если бы были на моем месте? Я работаю над этим пару дней, и я в тупике.

Я рад предоставить дополнительную информацию, если она предоставит лучший контекст для более проницательных программистов, чем я :)


person Toby Penk    schedule 17.05.2016    source источник


Ответы (1)


Обновление: мой предыдущий ответ (ниже) на самом деле не исправлял эту прерывистую ошибку (которую, как указывает ОП, чрезвычайно сложно выявить из-за зависимости от Java). Вместо этого я последовал совету, данному здесь и мигрировал с пакета XLConnect на openxlsx, что полностью обходит проблему.

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

Я только что понял, в чем проблема: длина имени рабочего листа Excel, по-видимому, ограничена 31 символом, и мой код R генерировал имена рабочих листов, превышающие этот предел.

Просто для ясности: я имею в виду имена отдельных листов с вкладками в книге Excel, а не имя файла самой книги.

Обрезка имени каждого листа не более чем до 31 символа устранила эту ошибку для меня.

person hjh    schedule 30.05.2016