Как скопировать файлы в подпапках в другую подпапку на основе шаблона в R - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь скопировать файлы из одного каталога в другой, основываясь на некоторых шаблонах.В частности, у меня есть родительская папка (имена PF), которая содержит 10 подпапок.Каждая из этих подпапок содержит 20 подпапок.Каждая из этих подпапок содержит сотни файлов, которые имеют разные имена (например, a, b, c, d, e, f).В второй родительской папке (SPF) у меня есть разные подпапки, названные как файлы (a, b, c, d, e, f).Я хотел бы скопировать все файлы с именами (a, b, c, d, e, f) в новую подпапку (a, b, c, d, e, f) и чтобы их имена совпадали.Так, например, все файлы с именем a перейдут в подпапку a .

Я попробовал код, который не работает:

PF <- "/PATH/PF"
SPF<- "/PATH/SPF"
new.dir<- list.dirs(SPF, recursive=TRUE)

names<- c("a", "b", "c", "d", "e")

for (i in 1: length (names)){

e<-list.files("PATH/PF", recursive = TRUE,pattern=names[i])
file_new<- new.dir[grep(names[i], new.dir)]

file.copy(e[i], file_new[i])

}

У меня нет сообщения об ошибке, но ни один из моих файлов не скопирован, поэтому код не работает, и я не вижу, как это исправить.

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 30 мая 2018

Я не думаю, что ваша линия file_new<- new.dir[grep(names[i], new.dir)] делает то, что вы думаете, она делает.Если вы замените всю эту строку просто dir.create(file.path(SPF, names[i])) - это должно сработать.Вот цикл for, который я использовал, который, кажется, работает (при условии, что он должен работать, учитывая, что нет воспроизводимого образца подкаталогов).

for (i in 1:length(names)){

    e <- list.files(PF, recursive = TRUE)
    dir.create(file.path(SPF, names[i]))

    file.copy(file.path(PF, e[i]), file.path(SPF, names[i]), overwrite = TRUE)

}

Как примечание, файлы, которые яперемещены называются a.csv, b.csv и так далее.Я извлек pattern=names[i] из ответа, потому что он соответствовал всем файлам из-за .csv.Если «names» будет реальным, более длинным именем файла, вы можете добавить его обратно туда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...