R语言 与xlsx包冲突并选择.files

wbgh16ku  于 2023-09-27  发布在  其他
关注(0)|答案(6)|浏览(148)

我在加载xlsx包和使用choose. files时遇到了一个奇怪的问题。
这个问题在我将RStudio更新到最新版本(v0.97.237)时就开始了。如果我启动RStudio,然后加载xlsx(即library(xlsx))包加载得很好。但是,如果我尝试使用choose.files(),RStudio就会冻结(实际上它会持续运行,如果不使用Win7任务管理器结束它,就无法关闭它)。如果我先启动RStudio并使用choose.files,它就能正常工作。如果我运行library(xlsx)行,xlsx包将无法加载。它给出下面的错误。
我尝试重新安装xlsx包(沿着xlsxjars和rJava),但没有成功。也没有重新安装Java。
有什么建议吗?我用的是R v2.15.2。

library(xlsx)  
Loading required package: xlsxjars  
Loading required package: rJava  
Error occurred during initialization of VM  
Could not reserve enough space for object heap  
Error : .onLoad failed in loadNamespace() for 'xlsxjars', details:  
  call: .jinit()  
  error: Cannot create Java virtual machine (-4)  
Error: package ‘xlsxjars’ could not be loaded

编辑:问题在这里。抱歉造成任何混淆。当我输入这个:

filename<-file.choose() #select file
library(xlsx)
mydata<-read.xlsx(filename,1) #load datafile

我可以成功地选择文件名,但xlsx包无法加载,因此我无法打开数据文件。上面的错误。但是,如果我运行这个(在我关闭并重新启动RStudio之后):

library(xlsx)
filename<-file.choose() #select file
mydata<-read.xlsx(filename,1) #load datafile

xlsx包正确加载,但file.choose导致R无限期运行,因此脚本冻结,我无法加载文件。使用choose.files()也是如此。我不知道为什么这两个东西(xlsx和file.choose/choose.files)会冲突,但看起来它们是因为我只能使用一个或另一个,这取决于我先使用哪一个。
编辑2:我在不同的计算机上尝试过(相同的操作系统,相同版本的R,RStudio和Java),我遇到了同样的问题。
编辑3:我转换回RStudio v0.97.90,问题就消失了。我想这是RStudio的问题。

yqyhoc1h

yqyhoc1h1#

我总是在顶部使用这些行:

options(java.parameters="-Xmx4000m")
options(java.home="C:/Program Files/Java/jre7/")

看能不能帮上忙。

s1ag04yj

s1ag04yj2#

尝试清除您的临时文件从
控制面板>程序> Java
看看能不能用

eoigrqb6

eoigrqb63#

我最近在一台新机器上安装R时遇到了这个问题。确保您使用的是正确的Java版本(32位vs 64位),以匹配您的R版本。请注意,64位版本的Java不在他们的主下载页面上,而是在他们的“手册”d/l页面here上。

ha5z0ras

ha5z0ras4#

试试这些软件包:

install.packages("XLConnect")
install.packages("xlsxjars")
install.packages("xlsx")

然后加载library()
使用read.xlsx2("blah.xlsx",sheetIndex=NULL)
不要使用file.choose,只需将文件直接插入到read.xlsx2函数中

read.xlsx2("blah.xlsx",sheetName=NULL")
pkbketx9

pkbketx95#

其中一个较新的软件包是rio软件包。它解决了我遇到的许多导入和导出问题,并且还有一个额外的好处,即只需要一个库就可以导入/导出许多不同的格式。它根据文件名的扩展名确定格式。它似乎也比其他一些软件包运行得更干净、更快,尽管它使用的功能基本相同。例如,对于Excel文件,它使用write.xlsx函数,但对于大型数据集,它可以工作,而write.xlsx不能。软件包文档可以在here中找到。

install.packages("rio")    
library(rio)

import("myfile.xlsx")
export(df, "myfile.xlsx")
vfh0ocws

vfh0ocws6#

我推荐Hadley的readxl包,它从CRAN安装,没有Java依赖。

library("readxl")
my_data <- read_excel(filename, sheet = 1)

相关问题