与xlsx包和choose.files冲突

时间:2012-12-04 18:42:58

标签: java r xlsx rstudio

我在加载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问题。

6 个答案:

答案 0 :(得分:1)

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

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

看看是否有帮助。

答案 1 :(得分:0)

尝试从

清除临时文件

控制面板&gt;节目&gt; Java

看看它是否有效。

答案 2 :(得分:0)

我最近在新机器上安装了R这个问题。确保您使用的是正确版本的Java(32位与64位)以匹配您的R版本。请注意,64位版本的Java在其主下载页面上找不到,但在“手动”d上找不到/ l页面here

答案 3 :(得分:0)

尝试其中一些套餐:

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")

答案 4 :(得分:0)

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

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

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

答案 5 :(得分:0)

我推荐使用Hadley的readxl软件包,它从CRAN开始安装,没有Java依赖项。

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