r语言 - 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代码。那么,从一开始——我该如何调查这个"令人羡慕"的错误呢?如果你站在我的立场上,你会怎么做?我已经做了几天了,我被难住了。

如果能为比我更有眼光的程序员提供更好的上下文,我很乐意提供额外的信息:)

更新:事实上,我之前的回答(如下)并没有修复这个间歇性错误(正如OP所指出的,由于Java依赖性,很难消除这个错误)。相反,我遵循了这里给出的建议,从XLConnect包迁移到了openxlsx,这完全避开了这个问题。

上一个答案:一段时间以来,我一直对这个错误感到沮丧,包括在写工作簿时明显的间歇性和R占用了几分钟。

我刚刚意识到问题是什么:Excel工作表的名称长度似乎限制在31个字符以内,而我的R代码生成的工作表名称超过了这个限制。

为了清楚起见,我指的是Excel工作簿中各个选项卡式工作表的名称,而不是工作簿本身的文件名。

将每个工作表名称修剪为不超过31个字符为我修复了此错误。

相关内容

最新更新