虽然在R中安装了xlsx包,但它不起作用

如何解决虽然在R中安装了xlsx包,但它不起作用

虽然安装了 xlsx 包,但它不起作用。 我收到以下错误。我应该怎么办?我用的是最新版的R

install.packages("xlsx")
Installing package into ‘C:/Users/Cgdm/Documents/R/win-library/4.0’
(as ‘lib’ is unspecified)
trying URL 'https://cran.rstudio.com/bin/windows/contrib/4.0/xlsx_0.6.5.zip'
Content type 'application/zip' length 374910 bytes (366 KB)
downloaded 366 KB

package ‘xlsx’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
C:\Users\Cgdm\AppData\Local\Temp\RtmpCy2Eng\downloaded_packages


library(xlsx)
Error: package or namespace load failed for ‘xlsx’:
onLoad failed in loadNamespace() for 'rJava',details:
call: fun(libname,pkgname)
error: JAVA_HOME cannot be determined from the Registry

解决方法

常见问题 -- Java 和 xlsx 包

以前没有使用过依赖 Java 的包的 R 用户在尝试使用用于读取 Excel 电子表格的 xlsx 包时经常会遇到问题。

未安装 Java 运行时

首先,许多新的 R 用户以前不需要在他们的计算机上安装 Java 运行时。 xlsx 包依赖于 rJavaxlsxjars 包。 rJava 要求计算机上还安装有 Java Runtime Environment 1.2 或更高版本。

解决方案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(...)
  

同样的过程可用于 readxl

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

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

也就是说,对于仍想使用 xlsx 软件包的人,有适用于 Windows、Mac OSX 和 Ubuntu Linux 的可行解决方案。

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

解决方案 (Mac OSX): 随着 Mac OSX 的更新版本,这变得更加复杂。在计算机上安装 Java 开发工具包后,需要遵循一组特定的命令。这些记录在 rJava Issue 86 github page 上。

enter image description here

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

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

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

  install.packages("xlsx")

Windows 中的 32 位与 64 位 Java

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

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

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

通过在 R / RStudio 中执行以下函数,可以识别安装的 Java 版本,以及它是 32 位还是 64 位。

system("java -version")

...在基于 Windows 的 PC 上会返回类似的内容。

enter image description here

从 Windows 注册表中提取 Java 设置

另一种验证安装在基于 Windows 的机器上的 Java 版本的方法是使用 utils::readRegistry() (h/t Access Windows Registry inside R)。

readRegistry("SOFTWARE\\JavaSoft\\Java Runtime Environment","HLM",maxdepth=3)

返回以下内容:

> readRegistry("SOFTWARE\\JavaSoft\\Java Runtime Environment",maxdepth=3)
$BrowserJavaVersion
[1] "11.261.2"

$CurrentVersion
[1] "1.8"

$`1.8`
$`1.8`$JavaHome
[1] "C:\\Program Files\\Java\\jre1.8.0_261"

$`1.8`$MicroVersion
[1] "0"

$`1.8`$RuntimeLib
[1] "C:\\Program Files\\Java\\jre1.8.0_261\\bin\\server\\jvm.dll"


$`1.8.0_261`
$`1.8.0_261`$JavaHome
[1] "C:\\Program Files\\Java\\jre1.8.0_261"

$`1.8.0_261`$MicroVersion
[1] "0"

$`1.8.0_261`$RuntimeLib
[1] "C:\\Program Files\\Java\\jre1.8.0_261\\bin\\server\\jvm.dll"

$`1.8.0_261`$MSI
$`1.8.0_261`$MSI$AUTOUPDATECHECK
[1] "1"

$`1.8.0_261`$MSI$AUTOUPDATEDELAY
[1] ""

$`1.8.0_261`$MSI$EULA
[1] ""

$`1.8.0_261`$MSI$FROMVERSION
[1] "NA"

$`1.8.0_261`$MSI$FROMVERSIONFULL
[1] ""

$`1.8.0_261`$MSI$FullVersion
[1] "1.8.0_261-b12"

$`1.8.0_261`$MSI$INSTALLDIR
[1] "C:\\Program Files\\Java\\jre1.8.0_261\\"

$`1.8.0_261`$MSI$JAVAUPDATE
[1] "1"

$`1.8.0_261`$MSI$JU
[1] ""

$`1.8.0_261`$MSI$OEMUPDATE
[1] ""

$`1.8.0_261`$MSI$PRODUCTVERSION
[1] "8.0.2610.12"

这是很多输出,但是我们仍然可以看到当前的Java版本是1.8,而JavaHome设置为C:\\Program Files\\Java\\jre1.8.0_261。由于注册表树相对复杂,因此编写正确的密钥以减少返回的输出量需要相当多的知识。

# more specific extract,given that $CurrentVersion is 1.8
readRegistry("SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.8",maxdepth=3)

...返回一组更有针对性的注册表设置。

> readRegistry("SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.8",maxdepth=3)
$JavaHome
[1] "C:\\Program Files\\Java\\jre1.8.0_261"

$MicroVersion
[1] "0"

$RuntimeLib
[1] "C:\\Program Files\\Java\\jre1.8.0_261\\bin\\server\\jvm.dll"

Java / R 与非英文版 Windows 10 的兼容性

请注意,截至 2020 年 7 月,Stackoverflow.com 上的用户已报告在 Windows 版本为非英语语言版本(例如中文、波兰语等)的情况下安装 Java 和 rJava 时出现问题。 Java 安装程序与这些版本的 Windows、R 和 rJava 程序包的工作方式似乎无法正确访问 JAVA_HOME 目录。

要解决此问题,请使用 Windows 使用的相同语言重新安装 R。也就是说,在中文版的 Windows 上,安装支持中文的 R。安装后,您可以通过在 language = "en" 文件中设置 .Rconsole 将语言更改为英语。

参考: Common Problems: Java and xlsx package,最初由我发布在我的约翰霍普金斯大学数据科学专业化社区导师存储库上,2017 年 1 月。

,

您的 JAVA_HOME 似乎没有正确配置,因此 来自https://www.rdocumentation.org/packages/xlsx

“确保系统环境变量 JAVA_HOME 配置正确并指向您选择的 jdk。通常,这也将包含在您的 PATH 环境变量中。可以从 R 中看到选项和系统环境变量Sys.getenv()."

通过执行检查您的配置

d <- Sys.getenv()
d[names(d) == "JAVA_HOME"]

它应该指向您的 Java 安装,例如“C:\Program Files\Java\jdk1.8.0_104”

在 Windows 10 上,可以在“高级系统设置、系统属性、环境变量”中进行设置

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res