6

I am trying to use .xlsx library but function write.xlsx is returning error that such can not be found.

When I am installing library(xlsx) in log I can read:

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 is up to date.

4

2 回答 2

15

原始帖子中的代码失败,因为该xlsx包使用Apache POI Java API to 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)
> 

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

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

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

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 问题 GitHub 页面上的一系列命令,包括执行 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
于 2017-12-22T14:50:16.197 回答
3

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

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

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

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

于 2017-12-22T14:19:06.447 回答