XLConnect 函数未将参数传递给 system.file
XLConnect function is not passing argument to system.file
我对 XLConnect 库有疑问。它的 system.file 功能,我只见过与
一起使用
file1 <- system.file(file, package ="XLConnect")
其中文件始终等于字符串。但是我有一个字符串列表,其中包含每个文件的文件名。我在遍历列表的 for 循环中有这个。无论出于何种原因,file1 是空的,即使文件对象具有等效的 "soandso.xlsx"。
所以我的问题是我需要文件是一个字符串吗?
编辑 #1:
因此,我从使用给我一个单独错误的 XLConnect 库切换到 xlsx 库,至少现在,我可以将代码获取到 运行,尽管有不同的错误。
我认为我正在取得进展,因为我的代码在第一个循环后 运行 失败(因为 k 增加到 2)并且我有一些东西填充我的数据集变量(我存储 'read.xlsx2' 回复).
我附上了当前错误的屏幕截图:
Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, : java.lang.IllegalArgumentException: Your InputStream was neither an OLE2 stream, nor an OOXML stream
编辑#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 列宽和可变行长 - 由于新区域或刚刚重命名的区域。我得到的新错误是:
另外:警告信息:
在 unzip(xlsxFile, exdir = xmlDir) 中:从 zip 文件中提取错误 1
编辑#3:
source('~/.active-rstudio-document', 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
抱歉,我仍然遇到问题,但我知道问题出在哪里。由于某种原因,作为文件打印的内容前面带有“~$”,当我只输入文件名 'Q1, 2011 - Halton, all home types.xlsx' 作为文件时,它起作用了,我得到了要输入到数据框中的数据。现在的问题是,我显然无法批量导入 60 个不同的 Excel 名称...
尝试使用 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:
通过从文件名中读取来添加季度和年度信息。这仅在所有文件名都遵循相同模式时才有效。
我对 XLConnect 库有疑问。它的 system.file 功能,我只见过与
一起使用file1 <- system.file(file, package ="XLConnect")
其中文件始终等于字符串。但是我有一个字符串列表,其中包含每个文件的文件名。我在遍历列表的 for 循环中有这个。无论出于何种原因,file1 是空的,即使文件对象具有等效的 "soandso.xlsx"。
所以我的问题是我需要文件是一个字符串吗?
编辑 #1: 因此,我从使用给我一个单独错误的 XLConnect 库切换到 xlsx 库,至少现在,我可以将代码获取到 运行,尽管有不同的错误。
我认为我正在取得进展,因为我的代码在第一个循环后 运行 失败(因为 k 增加到 2)并且我有一些东西填充我的数据集变量(我存储 'read.xlsx2' 回复).
我附上了当前错误的屏幕截图:
Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, : java.lang.IllegalArgumentException: Your InputStream was neither an OLE2 stream, nor an OOXML stream
编辑#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 列宽和可变行长 - 由于新区域或刚刚重命名的区域。我得到的新错误是:
另外:警告信息: 在 unzip(xlsxFile, exdir = xmlDir) 中:从 zip 文件中提取错误 1
编辑#3:
source('~/.active-rstudio-document', 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
抱歉,我仍然遇到问题,但我知道问题出在哪里。由于某种原因,作为文件打印的内容前面带有“~$”,当我只输入文件名 'Q1, 2011 - Halton, all home types.xlsx' 作为文件时,它起作用了,我得到了要输入到数据框中的数据。现在的问题是,我显然无法批量导入 60 个不同的 Excel 名称...
尝试使用 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: 通过从文件名中读取来添加季度和年度信息。这仅在所有文件名都遵循相同模式时才有效。