R Выберите файлы в рабочем каталоге на основе критериев в формате CSV

#r #select #conditional-statements

#r #выберите #условные операторы

Вопрос:

У меня есть рабочий каталог под названием «NVSPL», содержащий более 7000 файлов .txt. Некоторые из этих файлов я хочу игнорировать во время анализа. Я создал отдельный файл CSV со столбцом, который содержит имя и расширение каждого из более чем 7000 файлов .txt в моем рабочем каталоге. Второй столбец в CSV имеет либо «0», если я хочу сохранить связанный файл .txt, либо «1», если я хочу игнорировать связанный файл .txt.

Как я могу заставить R просмотреть CSV, найти все «0» и создать новую папку с соответствующими файлами .txt?

введите описание изображения здесь

В этом случае я хотел бы создать новую папку, которая будет содержать только файлы с «0» в столбце «GoodData».

Спасибо вам за ваше время и усилия.

Комментарии:

1. Я не думаю, что есть какая-либо необходимость создавать новую папку и перемещать файлы, если вы отметили файлы? Просто используйте флаг в качестве основы для чтения в R или нет.

2. @neilfws спасибо за комментарий. Я согласен, это был бы лучший способ сделать это, чтобы свести к минимуму создание новых папок. Есть ли у вас какие-либо предложения о том, как это сделать?

Ответ №1:

Мы можем использовать file.copy . Подмножество файлов из столбца «Имя файла», а затем file.copy скопируйте эти файлы в созданный новый каталог

 files <- file.path("path/to", with(df1, FileName[!GoodData]))
dir.create("path/to/NVSPL_new", recursive = TRUE)


for(file in files) {

   file.copy(file, "path/to/NVSPL_new")
   }
 

Комментарии:

1. Спасибо за ответ. Однако я не уверен, что понимаю, как это работает. Я предполагаю, что «df1» — это CSV-файл, уже загруженный в R. Предполагая это и добавляя путь к каталогу файлов .txt, где у вас есть «путь / к», R возвращает сообщение об ошибке: «Ошибка в eval(substitute(expr), data, enclos = parent.frame()): объект ‘FileName’ не найден» Есть идеи? Кроме того, я не понимаю, как ваш код выбирает на основе «0» или «1». Спасибо!

2. @user3494534 Да, в вашем столбце «Имя файла» указано только имя файла, а не путь. Для копирования файлов требуется правильный путь. Я использовал path/to/ , чтобы вы могли изменить их, используя либо paste или file.path

3. @user3494534 Что касается !GoodData , столбец является двоичным. Если мы отрицаем ( ! ) , то он преобразуется в логический, при этом 0 изменяется на TRUE, а 1 на FALSE. Итак, мы используем это для подмножества имени файла ‘, это также может быть сделано явно как FileName[GoodData == 0]

4. @user3494534 Вам нужно двойное «