我有许多文件要分析,所有的名称模型如下(为方便起见,我会报告简化reprex在这里):
A_(ele)_c.xls
A_(ele)_d.xls
A_(ele)_e.xls
B_(ele)_c.xls
B_(ele)_d.xls
B_(ele)_e.xls
我尝试的是将它们存储在宏列表中,以便:
list$A would contain
c
d
e
以及:
list$B would contain
c
d
e
所以我使用下面的代码
nm1 = c(LETTERS[1:2])
nm2 = c(letters[3:5])
list = NULL
for (i in Files){
for (j in nm1){
for (k in nm2){
list[[j]][[k]][[i]] = if(str_detect(i, pattern = j) == TRUE){read_excel(i)}
}
}
}
这似乎可以很好地对元素进行排序,但只是针对nm1中包含的j index
。如何修改str_detect function
中的pattern argument
以将k index
也考虑在内?
请随时提出替代方案
谢谢
1条答案
按热度按时间qyswt5oh1#
除非你有特别的理由创建很多对象,否则我建议你把它们作为一个列表导入,然后你可以把列表元素转换成一个数据集(假设结构是同构的),并为A,B,C和a,b,c等创建指示符。我还建议使用
fs::dir_ls()
或dir()
通过检查文件夹中的内容来构建文件路径。工作流可能如下所示: