我正在尝试使用以下行读取存储在网络驱动器上的1 MB XLSX文件
options(java.parameters="-Xmx4g")
library(rJava)
library(xlsx)
jgc <- function() {
gc()
.jcall("java/lang/System", method = "gc")
}
jgc()
folder <- 'network_drive/State_Stuff/'
state <- 'MI'
xlsx_in<- read.xlsx2(paste(folder, state,"_data.xlsx", sep = ""),
sheetName = "sheet1",
colClasses = c(rep("numeric",8), "character"))
Run Code Online (Sandbox Code Playgroud)
我得到以下错误。
Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, :
org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
我运行Windows7的64位RStudio和运行java -version
收益
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
Run Code Online (Sandbox Code Playgroud)
我尝试将文件从网络驱动器复制/粘贴到我的桌面上并读取该文件,但这会引发相同的错误。
但是,将文件移动到我的桌面上并使用另存为,然后将其另存为新文件,这样我就可以正常阅读了。
有人对这里发生的事情有想法吗?
尝试使用该readxl
软件包。它不依赖于Java。
因此,例如:
library(readxl)
folder <- 'network_drive/State_Stuff/'
state <- 'MI'
xlsx_in<- read_excel(paste(folder, state,"_data.xlsx"),
sheet = "sheet1",
col_types = c(rep("numeric",8), "text"))
Run Code Online (Sandbox Code Playgroud)