XLConnect:附加到64位R

时间:2016-11-01 15:45:39

标签: r xlconnect r-xlsx

我需要将一些R数据导出到格式化的excel文件,并且之前已成功使用R中的XLConnect和xlsx包。我最近搬到64位R,无法工作。我在一堆其他软件包中解决了一些Oracle / Java架构冲突。我相信这里有类似的东西,但我无法破解它。

当我致电library(XLConnect)时,rJavaXLConnectJars无问题地附加。

以下是错误和会话信息:

> library(XLConnect)
Loading required package: XLConnectJars
Error : .onLoad failed in loadNamespace() for 'XLConnect', details:
  call: .jfindClass(as.character(class))
  error: class not found
Error: package or namespace load failed for ‘XLConnect’

> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] XLConnectJars_0.2-12

loaded via a namespace (and not attached):
[1] rsconnect_0.4.3 tools_3.3.1     rJava_0.9-8    

当我尝试附加xlsx时出现类似错误。

> library(xlsx)
Loading required package: rJava
Loading required package: xlsxjars
Error : .onAttach failed in attachNamespace() for 'xlsx', details:
  call: .jnew("org/apache/poi/xssf/usermodel/XSSFWorkbook")
  error: java.lang.UnsupportedClassVersionError: Bad version number in .class file
Error: package or namespace load failed for ‘xlsx’

如果我切换到32位R,则XLConnectxlsx的所有内容都可以正常运行。我真的需要运行64位R来满足其他要求。

1 个答案:

答案 0 :(得分:1)

如果不进入技术细节,您需要64位版本的Java才能使用64位版本的R.

即使这样可以解决您发布的问题,但我认为通过放弃基于Java的XLConnectxlsx - 包连接到Excel,您将获得更多帮助。相反,请使用openxlsx - 包。它做同样的事情(是的,也导出格式化的Excel表格)作为另外两个,但不依赖于Java。

除了没有Java的64位/ 32位问题外,还有一些优点:

首先,在处理大型表时,您不会遇到OutOfMemoryErrors:

  

错误:OutOfMemoryError(Java):超出了GC开销限制。

其次,即使基于Java的软件包不显示错误,它们也可能需要很长时间才能使用大型表。 openxlsx没有这些问题。

最后和个人注意事项:我最初在软件包之间切换时犹豫不决,但它解决了我对基于Java的软件包不喜欢的所有问题,并且语法非常相似。