原始帖子中的代码无法正常运行,因为 xlsx
包使用了 Apache POI 的 Java API 处理 Excel 文件,因此需要安装 rJava
包。而 rJava
包又必须要求机器上安装并能够从 R 中访问可用的、兼容版本的 Java 运行环境。
可以通过 system()
函数来判断 Java 是否可以从 R/RStudio 中访问。
> 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 文件,包括:
- xlsx -- 需要 rJava 包
- XLConnect -- 需要 rJava 包
- openxlsx -- 不需要 rJava 包
- 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")
...并输出:
![在此输入图像描述](https://istack.dev59.com/2Q4O0.webp)
如果必须使用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页面上有说明,包括执行一个R脚本重新为R配置Java。
Linux:需要使用适合该Linux版本的软件包安装工具安装Java,然后配置R以使用它。例如,在Ubuntu中,可以使用高级打包工具进行安装。
sudo apt-get install openjdk-8-jdk
sudo R CMD javareconf
openxlsx
,它不依赖于Java。 - Jaapwritexl
来输出。请查看我的答案,其中包含writexl::write_xlsx()
的工作示例。 - Len Greski