尽管xlsx软件包安装在R中,但它不起作用

尽管xlsx软件包安装在R中,但它不起作用,r,rjava,r-xlsx,R,Rjava,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'

虽然安装了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包 R以前没有使用过依赖Java的软件包的用户在尝试使用用于读取Excel电子表格的
xlsx
软件包时经常会遇到问题

未安装Java运行时 首先,许多新的R用户以前不需要在他们的计算机上安装Java运行时。
xlsx
包取决于
rJava
xlsxjars
rJava
要求Java运行时环境1.2或更高版本也出现在您的计算机上

解决方案1:使用不需要Java的excel reader包 专业提示:解决此问题的最简单方法是使用不依赖Java的R包,例如或

对于
openxlsx
,这非常简单

  install.packages("openxlsx")
  library(openxlsx)
  # read the help file to identify the arguments needed to 
  # correctly read the file
  ?openxlsx
  theData <- read.xlsx(...)
  
解决方案2:安装Java和所需的R包 也就是说,对于那些仍然想使用
xlsx
软件包的人来说,有一些适用于Windows、Mac OSX和Ubuntu Linux的可行解决方案

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

解决方案(MacOSX):由于MacOSX的较新版本,这变得更加复杂。在计算机上安装Java开发工具包后,需要遵循一组特定的命令。这些记录在上

解决方案(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位Java与64位Java 人们可能会遇到的另一个常见问题是,安装在计算机上的Java运行时环境版本与R版本(32位或64位)之间不兼容

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

解决方案:此问题可以通过以下两种方式解决:或者通过将RStudio配置更改为使用32位版本的R

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

system("java -version")
…在基于Windows的PC上会返回类似的内容

从Windows注册表提取Java设置 验证安装在基于Windows的计算机上的Java版本的另一种方法是使用
utils::readRegistry()
(h/t)

返回以下内容:

> readRegistry("SOFTWARE\\JavaSoft\\Java Runtime Environment","HLM",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\u 261
。由于注册表树相对复杂,因此需要相当多的知识来编写正确的键以减少返回的输出量

# more specific extract, given that $CurrentVersion is 1.8
readRegistry("SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.8","HLM",maxdepth=3)
…返回一组更有针对性的注册表设置

> readRegistry("SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.8","HLM",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月,上的用户报告在Windows版本为非英语版本(如中文、波兰语等)的情况下安装Java和rJava时出现问题。Java安装程序处理这些版本的Windows、R和
rJava
软件包的方式似乎无法正确访问
Java\u HOME
目录

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


参考:,最初由我发布在我的约翰·霍普金斯数据科学专业化社区导师知识库上,2017年1月。

您的JAVA_主页似乎配置不正确,因此 发件人:

确保系统环境变量JAVA_HOME已正确配置,并指向您选择的jdk。通常情况下,这也将包含在PATH环境变量中。可从R获得的选项和系统环境变量可通过Sys.getenv()查看

通过执行以下操作检查您的配置

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

d显然
rJava有问题。或者可以帮助您尝试使用具有类似功能的
openxlsx
软件包,但功能并不完全相同(并且不需要
rJava
)。
> readRegistry("SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.8","HLM",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"
d <- Sys.getenv()
d[names(d) == "JAVA_HOME"]