【问题标题】:write.xlsx function not workingwrite.xlsx 函数不起作用
【发布时间】:2018-06-05 04:40:26
【问题描述】:

我正在尝试使用 .xlsx 库,但函数 write.xlsx 正在返回无法找到的错误。

当我在日志中安装库(xlsx)时,我可以阅读:

Error : .onLoad nie powiodło się w funkcji 'loadNamespace()' dla pakietu 'rJava', szczegóły:
  wywołanie: fun(libname, pkgname)
  błąd:  No CurrentVersion entry in Software/JavaSoft registry! Try re-installing Java and make sure R and Java have matching architectures.
In addition: Warning messages:
1: pakiet ‘xlsx’ został zbudowany w wersji R 3.3.2 
2: pakiet ‘rJava’ został zbudowany w wersji R 3.3.3 
Error: pakiet ‘rJava’ nie mógł zostać załadowany

Java 是最新的。

【问题讨论】:

  • 你可能想试试openxlsx,它不依赖Java。
  • @Jaap 已安装并运行 readxl 库。所以是JAVA的问题?
  • @RafMil - 需要writexl 来写入输出。有关writexl::write_xlsx() 的工作示例,请参阅我的答案。

标签: r xlsx r-xlsx


【解决方案1】:

原帖中的代码失败,因为xlsx 包使用Apache POI Java API 到Excel,因此需要rJava 包。反过来,rJava 包需要一个工作的、兼容的 Java 运行时环境版本才能安装在机器上并且可以从 R 访问。

可以通过system() 函数判断是否可以从 R / RStudio 访问 Java。

> system("java -version")
java version "13.0.2" 2020-01-14
Java(TM) SE Runtime Environment (build 13.0.2+8)
Java HotSpot(TM) 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing)
> 

至少有四组用于处理 Excel 文件的 R 包,包括:

  1. xlsx -- 需要 rJava 包
  2. XLConnect -- 需要 rJava 包
  3. openxlsx -- 不需要 rJava 包
  4. readxl / writexl -- 不需要 rJava 包

对于选项 3 和 4,解决方案只是使用 install.packages() 安装所需的软件包(如 @Linus 的另一个答案中所述),一旦您将 R 更新到最新版本。

install.packages("openxlsx") 
library(openxlsx)

install.packages(c("readxl","writexl")) 
library(readxl)
library(writexl)

一个工作示例:写入 Excel 文件

library(writexl)
data <- data.frame(matrix(runif(100),nrow=10,ncol=10))
write_xlsx(data,"./data/simpleExcel.xlsx")

...和输出:

如果你必须使用 rJava...

不幸的是,选项 1 和 2 比“安装 Java”要复杂得多。如果必须使用xlsx 或需要rJava 包来支持其他R 包,则Java 的安装因操作系统而异。

Windows:必须安装架构与 R 兼容的 Java 版本(即 32 位与 64 位)。可能会考虑安装 32 位和 64 位版本,因为计算机上安装的某些 Windows 程序可能需要 32 位 Java 与 64 位。使用 RStudio,如果机器上只安装了 32 位 Java,则可以将 R 配置为使用 32 位版本的 R。

Mac OS X:必须安装 Java 并运行一系列记录在 rJava Issues GitHub page 上的命令,包括执行 R 脚本来为 R 重新配置 Java。

Linux:需要使用适合Linux版本的包安装工具安装Java,然后配置R使用它。例如,在 Ubuntu 中,可以使用高级打包工具进行安装。

 sudo apt-get install openjdk-8-jdk # openjdk-9-jdk has some installation issues
 sudo R CMD javareconf

【讨论】:

    【解决方案2】:

    xlsx 需要 Java。请从https://www.java.com/de/安装当前的Java版本

    请注意,R 和 java 都是 32 位或 64 位,如错误消息中所述

    ...并确保 R 和 Java 具有匹配的架构。

    或使用 writexlsopenxlsx。它们不依赖于 Java(感谢@Len)

    【讨论】:

    • OP 询问有关编写 Excel 文件的问题。因此,正确的包是 writexl,而不是 readxl。
    • 谢谢。该库可以运行而不会出现任何错误。所以它是 JAVA 过时的版本或类似的东西? R 和 JAVA 的架构是相同的。感谢您的帮助。
    • @RafMil - 诊断 Java 问题所需的第一件事是了解您使用的操作系统。正如我在回答这个问题时所指出的,使用 R 安装 Java 运行时会因操作系统而异。
    猜你喜欢
    • 2018-11-14
    • 2021-12-17
    • 2011-05-04
    • 2013-09-08
    • 2013-09-26
    • 2011-09-04
    • 2014-08-05
    • 2021-06-02
    • 2012-09-28
    相关资源
    最近更新 更多