[英]XLConnect 'envir' error
我管理許多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”錯誤? 如果你穿着我的鞋子,你會怎么做? 我已經為此工作了幾天,但感到很困惑。
如果能為比我自己更多的眼光敏銳的程序員提供更好的上下文,我很樂意提供更多信息:)
更新:我以前的回答(如下)並沒有解決此間歇性錯誤(正如OP指出的那樣,由於Java依賴性,它很難被取消)。 相反,我遵循此處給出的建議,從XLConnect
包遷移到openxlsx
,這完全避開了問題。
以前的答案:一段時間以來,我一直對這個錯誤感到沮喪,其中包括明顯的間歇性以及在編寫工作簿時將R捆綁了幾分鍾。
我只是意識到問題出在哪里:Excel工作表的名稱長度似乎限制為31個字符,而我的R代碼生成的工作表名稱超出了此限制。
為了清楚起見,我指的是Excel工作簿中各個選項卡式工作表的名稱,而不是工作簿本身的文件名。
將每個工作表名稱修剪到不超過31個字符對我來說解決了此錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.