write.xlsx函数不起作用

Raf*_*Mil 3 r xlsx r-xlsx

我试图使用.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
Run Code Online (Sandbox Code Playgroud)

Java是最新的.

Len*_*ski 9

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

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

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

install.packages("openxlsx") 
library(openxlsx)
Run Code Online (Sandbox Code Playgroud)

要么

install.packages(c("readxl","writexl")) 
library(readxl)
library(writexl)
Run Code Online (Sandbox Code Playgroud)

工作示例:写入Excel文件

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

......和输出:

在此输入图像描述

如果你必须使用rJava ......

不幸的是,选项1比"安装Java"复杂得多.如果必须使用xlsx或需要rJava软件包来支持其他R软件包,那么Java的安装会因操作系统的不同而有很大差异.

Windows:必须安装一个版本的Java,其架构与R兼容(即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 # openjdk-9-jdk has some installation issues
 sudo R CMD javareconf
Run Code Online (Sandbox Code Playgroud)