R xlsx 包无法使用

lin*_*ing 0 r xlsx rjava

我的 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)
Run Code Online (Sandbox Code Playgroud)

所以根据this note,我安装了'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)
Run Code Online (Sandbox Code Playgroud)

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

Len*_*ski 7

xlsx包依赖于rJava包,它需要Java运行时环境(JRE)的有效安装。在安装rJava软件包之前,必须安装 Java 运行时环境 (JRE)。安装 JRE 的过程因操作系统而异,由于 Oracle从 2019 年开始对 Java许可要求进行了更改,因此使此过程变得更加困难。

如何判断是否安装了 JRE?

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

> 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
> 
Run Code Online (Sandbox Code Playgroud)

将 Excel 文件读入 R

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

解决方案 1:使用不需要 Java 的 Excel 阅读器包

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

对于openxlsx,这很容易。

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

相同的过程可用于readxl.

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

请注意,有一个补充包 ,writexl使人们能够编写 Excel 文件。

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

也就是说,对于想要使用该xlsx包处理 Excel 文件的人来说,有适用于 Windows、Mac OSX 和 Ubuntu Linux 的可行解决方案。

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

解决方案 (Mac OSX):Mac OSX的新版本开始,这变得更加复杂。在计算机上安装Java 开发工具包后,需要遵循一组特定的命令。这些记录在rJava 问题 86 github 页面上。我已经包含了此解决方案的屏幕截图,供人们直接参考。

在此处输入图片说明

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

  sudo apt-get install openjdk-8-jdk # openjdk-9-jdk has some installation issues
  sudo R CMD javareconf
Run Code Online (Sandbox Code Playgroud)

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

  install.packages("xlsx")
Run Code Online (Sandbox Code Playgroud)

Windows 中的 32 位与 64 位 Java

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

例如,如果安装了 64 位版本的 R 但安装了 32 位版本的 Java 运行时环境,R 将无法看到 Java 运行时环境,生成与上述相同的“Java 未安装错误” .

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