与xlsx包和choose.files冲突

问题描述 投票:0回答:6

我在加载 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 xlsx
6个回答
1
投票

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

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

看看是否有帮助。


0
投票

尝试从

清除临时文件

控制面板 > 程序 > Java

看看是否有效。


0
投票

我最近在新机器上安装 R 时遇到了这个问题。确保您使用正确的 Java 版本(32 位与 64 位)来匹配您的 R 版本。请注意,64 位版本的 Java 并未在其主下载页面上找到,而是在其“手册”上找到。 /l 页此处


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

0
投票

rio 软件包是较新的软件包之一。它解决了我遇到的许多导入和导出问题,并且具有仅需要一个库即可导入/导出多种不同格式的额外好处。它根据文件名的扩展名确定格式。尽管它使用基本相同的功能,但它似乎比其他一些软件包运行得更干净、更快。例如,对于 Excel 文件,它使用

write.xlsx
函数,但在处理大型数据集时对我有用,而
write.xlsx
则不起作用。可以在here找到软件包文档。

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

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

0
投票

我推荐 Hadley 的

readxl
软件包,它从 CRAN 安装,无需 Java 依赖。

library("readxl")
my_data <- read_excel(filename, sheet = 1)
© www.soinside.com 2019 - 2024. All rights reserved.