Как перейти вниз на уровень в R - PullRequest
0 голосов
/ 18 января 2019

У меня есть родительская папка (Папка), которая содержит много подпапок (50), поэтому, когда я перечисляю элемент в родительской папке, я получаю подпапки (первые 3 показаны в качестве примера):

Pfolder / A231

Pfolder / B986

Pfolder / C657

Каждая подпапка имеет 5 уровней подпапок. В качестве примера для первого и второго у меня есть: Папка / A231 / n1 / n2 / n3 / hju55 / meta / mydata.csv Pfolder / B986 / 876 / n37 / n4 / мета / mydata.csv

Так что я хотел бы получить доступ к mydata.csv для каждого. Я знаю, что для перемещения вниз по одной папке A231 я должен использовать "./n1" но есть ли способ, которым я мог бы попасть в последнюю папку, используя что-то похожее на этот относительный путь:

. /. /. /. /. / Meta / my data.csv

Обратите внимание, что все имена подпапок меняются, кроме последней.

Я хочу запустить цикл for, используя все мои data.csv, найденные в последней подпапке для каждой папки, найденной в папке.

Спасибо за вашу помощь. Извините, мой вопрос очевиден для многих из вас.

1 Ответ

0 голосов
/ 18 января 2019

Сначала вы можете получить все каталоги файлов:

all.files = list.files(recursive = T)

Затем ваш CSV-файл будет иметь те файлы, которые имеют наибольшее количество прямых слешей (как вы сказали, это всегда последний: * 1004).*

library(magrittr)
all.files[stringr::str_count(all.files, pattern = "/") %>% .[equals(., max(.))]]

поочередно, если это единственные файлы CSV в ваших подкаталогах, ваша работа будет намного проще:

csv.files = grep(pattern = ".csv", all.files, value = T)

или, если целевые файлы CSV находятся на самом низком уровне, но нетолько те, которые там есть, и не единственные CSV-файлы в подкаталогах, вы можете объединить эти два:

all.files[stringr::str_count(all.files, pattern = "/") %>% .[equals(., max(.))]] %>% grep(pattern = "csv",., value = T)
...