无法使用 R xlsx 包

R xlsx package can not be used

我的 R studio 版本是 4.0。我安装了xlsx包,但是当我需要使用它的时候,我得到一个错误:

library(xlsx)
Unable to find any JVMs matching version "(null)".
No Java runtime present, try --request to install.
Error: package or namespace load failed for ‘xlsx’:
 .onLoad failed in loadNamespace() for 'rJava', details:
  call: fun(libname, pkgname)
  error: JVM could not be found
In addition: Warning messages:
1: In system("/usr/libexec/java_home", intern = TRUE) :
  running command '/usr/libexec/java_home' had status 1
2: In fun(libname, pkgname) :
  Cannot find JVM library 'NA/lib/server/libjvm.dylib'
Install Java and/or check JAVA_HOME (if in doubt, do NOT set it, it will be detected)

所以按照这个说明,我安装了'rJava',一开始想加载这个包,但是还是报错:

library(rJava)
Unable to find any JVMs matching version "(null)".
No Java runtime present, try --request to install.
Error: package or namespace load failed for ‘rJava’:
 .onLoad failed in loadNamespace() for 'rJava', details:
  call: fun(libname, pkgname)
  error: JVM could not be found
In addition: Warning messages:
1: In system("/usr/libexec/java_home", intern = TRUE) :
  running command '/usr/libexec/java_home' had status 1
2: In fun(libname, pkgname) :
  Cannot find JVM library 'NA/lib/server/libjvm.dylib'
Install Java and/or check JAVA_HOME (if in doubt, do NOT set it, it will be detected)

有人可以给我一些关于如何加载 'xlsx' 和 'rJava' 包的建议吗?谢谢你。

xlsx 包依赖于 rJava 包,后者需要 Java 运行时环境 (JRE) 的有效安装。在安装 rJava 软件包之前,必须安装 Java 运行时环境 (JRE)。安装 JRE 的过程因操作系统而异,由于他们在 2019 年 licensing requirements for Java 中所做的更改,Oracle 使此过程更加困难。

如何判断是否安装了 JRE?

如问题评论中所述,可以使用命令行 java -version 验证安装在计算机上的 Java 运行时的版本。确认 Java 运行时可从 R / RStudio 访问也很重要。我们可以通过在 RStudio 中执行 system() 函数来做到这一点,也如问题评论中所述。

> system("java -version")
java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)
[1] 0
> 

正在将 Excel 个文件读入 R

有两种不同的方法可以解决这个问题。以下是我在 2017 年 Common Problems: Java and xlsx package 约翰霍普金斯大学数据科学专业 获取和清理数据 课程中就此主题编写的说明摘要。

解决方案 1:使用 Excel Reader 不需要 Java

的程序包

专业提示: 解决此问题的最简单方法是使用不依赖于 Java 的 R 包,例如 openxlsx or readxl .

对于openxlsx来说,非常简单。

  install.packages("openxlsx")
  library(openxlsx)
  # read the help file to identify the arguments needed to 
  # correctly read the file
  ?openxlsx
  theData <- read.xlsx(...)

相同的过程可用于 readxl

  install.packages("readxl")
  library(readxl)
  # read the help file to identify the arguments needed to 
  # correctly read the file 
  ?readxl
  theData <- read_excel(...)

请注意,有一个补充包 writexl,可以让人们编写 Excel 文件。

解决方案 2:安装 Java 和所需的 R 包

也就是说,对于想要使用 xlsx 包来处理 Excel 文件的人来说,Windows、Mac [=112] 有可行的解决方案=], 和 Ubuntu Linux.

解决方案 (Windows): 从 Oracle 下载并安装最新版本的 Java Runtime Environment。注意,如果你是运行 64位版本的R,需要安装64位版本的Java Runtime。

SOLUTION (Mac OSX): 从 Mac OSX 的较新版本开始,这变得更加复杂.安装 Java Development Kit on the computer. These are documented on the rJava Issue 86 github page 后需要遵循一组特定的命令。我附上了此解决方案的屏幕截图,供人们直接参考。

解决方案 (Ubuntu): 使用 Ubuntu 高级打包工具安装 Java,然后重新配置 Java R.

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

然后在 R/RStudio 中安装 xlsx 包。

  install.packages("xlsx")

32 位与 64 位 Java Windows

人们可能遇到的另一个常见问题是计算机上安装的 Java 运行时环境版本与 R 版本(32 位或 64 位)不兼容。

例如,如果安装了 64 位版本的 R 但安装了 32 位版本的 Java 运行时环境,R 将无法看到 Java 运行时环境,生成与上述相同的 "Java not installed error"。

解决方案:可以通过 installing the 64-bit version of Java Runtime for Windows 或更改 RStudio 配置以使用 32 位版本的 R 来解决此问题。