【发布时间】:2012-11-22 11:34:16
【问题描述】:
我在加载 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 的问题。
【问题讨论】:
-
看起来你的 Java 安装问题比 R 的问题更大。添加标签。您应该记录 Java 的版本号。这与
choose.files没有明显联系。 -
如果我不使用 choose.files,xlsx 包会加载并完美运行。 xlsx 唯一不起作用的情况是,如果我在使用 choose.files 后尝试加载它。我有 Java 版本 1.7.0_09
-
“在我用过choose.files 后使用它”是什么意思?有一个名为
file.choose的基本函数。 -
问题是 C 堆栈大小在 R 2.15.2 中从 10MB 增加到 64MB(由于此类错误,在 R 3.x.x 中减少到 16MB)。在调用 file.choose() 后查看您的错误消息“无法为对象堆保留足够的空间”,这似乎使用了一些内存。我猜想在调用
library(xlsx)之前调用.jinit(parameters=c("-Xrs", "-Xss1m"))可以解决这个问题。 -
我建议你使用 WriteXLS 包:{WriteXLS} 这个包对 Rstudio 更友好 imo。