当我输入
require(xlsx)
以在 R 中加载包 xlsx
时,会显示以下消息:
> require(xlsx)
Loading required package: xlsx
Loading required package: xlsxjars
Loading required package: rJava
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: fun(libname, pkgname)
error: JAVA_HOME cannot be determined from the Registry
Failed with error: ‘package ‘rJava’ could not be loaded’
我也尝试过手动加载
rJava
包,但收到此错误消息:
require(rJava)
Loading required package: rJava
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: fun(libname, pkgname)
error: No CurrentVersion entry in Software/JavaSoft registry! Try re-installing Java and make sure R and Java have matching architectures.
您对如何解决这个问题有什么建议吗?
原因可能与您使用64位操作系统和R版本但没有安装具有相同架构的Java有关。 您所要做的就是从此页面下载 Java 64 位:https://www.java.com/en/download/manual.jsp
之后尝试重新加载
xlsx
包。您不需要重新启动 R,或者如果它不起作用,请重新启动一次。
这是因为您的计算机缺少任一 Java 版本(32 位/64 位)。尝试安装两个 Jdks 并运行代码。
安装 Jdks 后打开 R 并输入代码
system("java -version")
这将为您提供安装的 Jdk 版本。然后尝试加载 rJava 包。这对我有用。
我遇到了类似的问题,对我有用的是设置 JAVA_HOME。我首先在 R 中感到厌倦:
Sys.setenv(JAVA_HOME = "C:/Program Files/Java/jdk1.8.0_101/")
当它真正起作用时,我将其设置了
系统属性 -> 高级 -> 环境变量
通过添加新的系统变量。然后我重新启动 R/RStudio,一切正常。
我也有类似的问题。这是由于依赖包“rJava”引起的。这个问题可以通过重新定向 R 使用不同的
JAVA_HOME
来解决。
if(Sys.getenv("JAVA_HOME")!=""){
Sys.setenv(JAVA_HOME="")
}
library(rJava)
这对我有用。
如果您在 RStudio 中出现此错误,请使用上面的 Lauren 的环境代码,并在“工具”、“全局选项”中将您的 R 版本更改为 32 位版本。如果您有较新的版本,应该有 32 位和 64 位 R 选项。这将需要重新启动 R,并限制您的内存选项。不过,不需要安装 64 位版本的 jre。
readxl
。这个包不需要外部依赖。
要读取/写入 Excel 文件,您可以使用:
readxl
阅读包和 writexl
写作包openxlsx
读写包使用
xlsx
和 XLConnect
(使用 rjava),如果你有大文件,你将面临内存错误
对我来说,我只需要确保 Java 是 64 位(以匹配 R)。
这是我如何下载并安装 64 位 Java:
如果您在 macOS 上遇到此问题,这里没有简单的方法:( 特别是当您想使用 R3.4 时。我已经遇到过。
对于 R3.3,它更容易一些(R3.3 是使用不同的编译器编译的)。
您还可以尝试使用一个命令即可完成 Java 安装的新 R 包:https://github.com/e-kotov/rJavaEnv
安装软件包:
if (!requireNamespace("remotes", quietly = TRUE)) {
install.packages("remotes")
}
remotes::install_github("e-kotov/rJavaEnv")
安装Java:
rJavaEnv::java_quick_install(version = 21)
这将下载Java 21(如果您使用的R包有任何特定要求,您可以自由更改版本),将其解压到缓存文件夹并将其链接到您当前的工作目录,设置Java的环境变量在当前会话中工作并保存设置以在当前项目/工作目录的 .Rprofile 中设置此 Java。在包文档中阅读更多信息:http://www.ekotov.pro/rJavaEnv/
附注披露:我是包的作者。
P.P.S 目前这可能不适用于某些 Linux 和基于 Intel 的 macOS 系统。