XLConnect函数未将参数传递给system.file

时间:2016-03-24 02:37:12

标签: r validation xlconnect

我的XLConnect库存在问题。它的system.file函数,我只看到与

一起使用
file1 <- system.file(file, package ="XLConnect")

其中file始终等于字符串。但是我有一个字符串列表,其中包含每个文件的文件名。我在for循环中有这个迭代遍历列表。无论出于何种原因,即使文件对象具有等效的&#34; soandso.xlsx&#34;,file1也是空的。

所以我的问题是我需要将文件作为字符串吗?

编辑#1: 所以我从使用XLConnect库切换到xlsx库给出了一个单独的错误,至少现在,我可以让代码运行,尽管有不同的错误。

我认为我正在取得进展,因为我的代码没有成功运行超过第一个循环(因为k增加到2)并且我有一些东西填充我的数据集变量(我存储&#39; read.xlsx2&#39 ;反应)。

我附上了当前错误的屏幕截图:

Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl,  : java.lang.IllegalArgumentException: Your InputStream was neither an OLE2 stream, nor an OOXML stream

Screenshot of my R Studio

编辑#2:

https://www.dropbox.com/s/s9413oee146v497/Q1%2C%202011%20-%20Halton%2C%20all%20home%20types.xlsx?dl=0 https://www.dropbox.com/s/tgaup2ihnlq7br2/Q4%2C%202015%20-%20Halton%2C%20condo%20types.xlsx?dl=0

我已经包含了我需要附加的2/60文件。我目的地的所有文件都是Excel文件,这些文件宽10列,行长可变 - 由于新区域或刚刚重命名的区域。我得到的新错误是:

另外:警告信息: 解压缩(xlsxFile,exdir = xmlDir):从zip文件中提取错误1

编辑#3:

  

来源(&#39;〜/ .active-rstudio-document&#39;,echo = TRUE)

> library("openxlsx")

> file_list = list.files(pattern = "xlsx$")

> dataset = data.frame()

> for (file in file_list){
+ 
+   print(file)
+   temp = read.xlsx(file,sheet = 1, colNames = F)
+   temp$quarter = substr(file,1,2)
+   temp$year = s .... [TRUNCATED] 
[1] "~$Q1, 2011 - Halton, all home types.xlsx"
Error in file(con, "r") : invalid 'description' argument
In addition: Warning message:
In unzip(xlsxFile, exdir = xmlDir) : error 1 in extracting from zip file

抱歉,我仍然遇到问题,但我知道问题出在哪里。出于某种原因,正在打印的文件是&#34;〜$&#34;在它之前,当我只输入文件名&#39; Q1,2011 - Halton,所有家庭类型.xlsx&#39;作为文件,它工作,我得到数据输入到数据帧。现在这个问题我显然无法批量导入60个不同的Excel名称......

1 个答案:

答案 0 :(得分:1)

尝试使用openxlsx库和以下代码:

library("openxlsx")

file_list = list.files(pattern = "xlsx$")

dataset = data.frame()

for (file in file_list){
    print(file)
    temp = read.xlsx(file,sheet = 1, colNames = F)
    temp$quarter = substr(file,1,2)
    temp$year = substr(file,4,8)
    dataset = rbind(dataset,temp)
}

编辑1: 添加了一个打印(文件)来检测哪个xlsx文件有解压缩问题。

编辑2: 通过从文件名中读取季度和年份信息。这仅适用于所有文件名遵循相同模式的情况。