簡體   English   中英

XLConnect'envir'錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM