我有一个父文件夹(Pfolder),其中包含许多子文件夹(50),因此当我在父文件夹中列出元素时,我会得到子文件夹(前三个示例所示):
Pfolder / A231
Pfolder / B986
Pfolder / C657
每个子文件夹都有5个级别的子文件夹。作为第一个和第二个的示例,我有:Pfolder / A231 / n1 / n2 / n3 / hju55 / meta / mydata.csv Pfolder / B986 / 876 / n37 / n4 / meta / mydata.csv
所以我想每个访问mydata.csv。 我知道要向下移动A231的一个文件夹,我应该使用“ ./n1” 但是有一种方法可以使用类似于此相对路径的方法进入最后一个文件夹:
./././././ meta / my data.csv
请注意,除最后一个文件夹外,所有子文件夹名称均发生更改。
我想使用在上一个子文件夹中找到的所有data.csv为pfolder中找到的每个文件夹运行一个for循环。
感谢您的帮助。对不起,我的问题对你们许多人来说都是显而易见的。
答案 0 :(得分:0)
您可以先获取所有文件目录:
all.files = list.files(recursive = T)
然后,您的csv文件将是具有最大斜杠数量的文件(正如您所说的,它始终是最后一个:
library(magrittr)
all.files[stringr::str_count(all.files, pattern = "/") %>% .[equals(., max(.))]]
或者,如果这些是子目录中唯一的csv文件,则您的工作会容易得多:
csv.files = grep(pattern = ".csv", all.files, value = T)
或者,如果目标csv文件处于最低级别,但不是唯一的csv文件,而不是子目录中唯一的csv文件,则可以将这两个结合起来:
all.files[stringr::str_count(all.files, pattern = "/") %>% .[equals(., max(.))]] %>% grep(pattern = "csv",., value = T)