XLConnect'envir'错误

时间:2016-05-17 13:44:09

标签: r excel xlconnect

我管理了许多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'错误?如果你穿我的鞋子,你会怎么做?我已经在这几天工作了,我很难过。

我很乐意提供额外的信息,如果它能为比我更挑剔的程序员提供更好的背景:)

1 个答案:

答案 0 :(得分:0)

更新: 事实上,我之前的回答(下面)没有解决这个间歇性错误(由于Java依赖性,OP指出非常难以解决)。相反,我遵循了here给出的建议,并从XLConnect包迁移到openxlsx,完全回避了问题。

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

我刚刚意识到问题所在:Excel工作表名称的长度似乎限制为31个字符,而我的R代码生成的工作表名称超出了此限制。

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

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