我在加载 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 的问题。
我总是在顶部使用这些行:
options(java.parameters="-Xmx4000m")
options(java.home="C:/Program Files/Java/jre7/")
看看是否有帮助。
尝试从
清除临时文件控制面板 > 程序 > Java
看看是否有效。
我最近在新机器上安装 R 时遇到了这个问题。确保您使用正确的 Java 版本(32 位与 64 位)来匹配您的 R 版本。请注意,64 位版本的 Java 并未在其主下载页面上找到,而是在其“手册”上找到。 /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 软件包是较新的软件包之一。它解决了我遇到的许多导入和导出问题,并且具有仅需要一个库即可导入/导出多种不同格式的额外好处。它根据文件名的扩展名确定格式。尽管它使用基本相同的功能,但它似乎比其他一些软件包运行得更干净、更快。例如,对于 Excel 文件,它使用
write.xlsx
函数,但在处理大型数据集时对我有用,而 write.xlsx
则不起作用。可以在here找到软件包文档。
install.packages("rio")
library(rio)
import("myfile.xlsx")
export(df, "myfile.xlsx")
我推荐 Hadley 的
readxl
软件包,它从 CRAN 安装,无需 Java 依赖。
library("readxl")
my_data <- read_excel(filename, sheet = 1)