如何通过忽略文件路径中的某些字符来读取csv文件或加载excel工作簿?

时间:2016-05-30 16:59:29

标签: r filepath xlconnect

我正在编写一个循环脚本,它涉及从工作簿中读取文件(使用包XLConnect)。挑战在于文件名包含我想忽略的字符(代表时间)。

例如,以下是这些文件的3条路径:

G://User//Documents//daily_data//Op_Schedule_20160520_132025.xlsx G://User//Documents//daily_data//Op_Schedule_20160521_142805.xlsx G://User//Documents//daily_data//Op_Schedule_20160522_103052.xlsx

我需要导入数百个这样的文件。我可以轻松地说明代表日期的字符串(例如20160522),但不能说明时间。

有没有办法让R忽略位于文件路径中的某些字符?以下是我编写脚本的想法(" ???"是我需要帮助的地方)。我知道循环可能不是最有效的方式,但如果您有任何建议,我可以接受建议:

require(XLConnect)
path= "G://User//Documents//daily_data//Op_Schedule_"

wd.seq = format(seq(as.Date("2014-01-01"),as.Date("2016-12-31"),"days"),format="%Y%m%d")

scheduleList = rep(list(matrix(1,1,1)),length(wd.seq))

for(i in 1:length(wd.seq)) { 
wb = loadWorkbook(file= paste0(path,wd.seq[i],"???",".xlxs"))
scheduleList[[i]] = readWorksheet(wb,sheet='=SCHEDULE', header = TRUE)
}

`

感谢阅读和建议,如果有的话。

马修

1 个答案:

答案 0 :(得分:1)

我不知道这是否有用,但是如果你想读取某个目录中的所有文件(在我看来你就是这样),你可以使用所有文件名读取到列表中list.files()函数,例如

 GetValue=ComboboxName.SelectedItem.Tag.ToString()

然后使用for循环

加载循环遍历列表的xlsx文件
grep -i

我之前没有使用过XLConnect函数,因此确切的代码可能不起作用,但循环将遍历该目录中的所有文件,因此您可以使用文件名的i变量构建加载调用(它不会是绝对路径,因此您可能需要使用粘贴来添加文件路径的第一部分)

我意识到目录中可能还有其他文件不是excel文件,你可以使用grepl来只选择包含“OP_Schedule _”的文件

fileList <- list.files(""G://User//Documents//daily_data//")

或者可能只选择目录中的.xlsx文件:

for(i in fileList) {
    loadWorkbook(file = i)
    }

修改以符合您的回复: 由于您需要将其与序列相匹配,因此您可以像之前那样进行:

fileListClean <- fileList[grepl("Op_Schedule_",fileList)]

然后使用grepl只选择以扩展名开头的文件:

fileListClean <- fileList[grepl(".xlsx",fileList)]

完全披露:我从这个答案得到的最后一部分:grep using a character vector with multiple patterns