与xlsx包和choose.files冲突

加载xlsx包并使用choose.files,我遇到一个奇怪的问题。

一旦我将RStudio更新到最新版本(v0.97.237),这个问题就开始了。 如果我启动RStudio,然后加载xlsx(即library(xlsx) ),则软件包加载正常。 但是,如果我尝试使用choose.files() ,则RStudio会冻结(实际上,它会持续运行,如果不使用Win7任务pipe理器就不能closures它)。 如果我启动RStudio并首先使用choose.files,它工作得很好。 如果我然后运行library(xlsx)行,xlsx包将不会加载。 它给出了下面的错误。

我已经尝试重新安装xlsx包(与xlsxjars和rJava一起),但是没有奏效。 也没有重新安装Java。

有什么build议么? 我正在使用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 

编辑:这是问题。 对不起,有任何困惑。 当我input这个:

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

我可以成功select文件名,但xlsx包加载失败,所以无法打开数据文件。 我得到上面的错误。 但是,如果我运行这个(而我已经closures并重新启动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问题。

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

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

看看是否有帮助。

尝试清除你的临时文件

控制面板>程序> Java

看看它是否有效。

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

尝试一下这些软件包:

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

其中一个较新的软件包是rio软件包。 它解决了我所拥有的许多导入和导出问题,并且还具有只需要一个库导入/导出许多不同格式的附加好处。 它根据文件名的扩展名确定格式。 它也似乎比其他一些软件包更干净,更快,即使它使用的function基本相同。 例如,对于Excel文件,它使用write.xlsx函数,但是在write.xlsx没有的情况下,对于大数据集已经有效。 包文档可以在这里find。

 install.packages("rio") library(rio) import("myfile.xlsx") export(df, "myfile.xlsx") 

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

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