использование R для копирования файлов

Как часть большей задачи, выполненной в R, выполненном под окнами, я хотел бы скопировать выбранные файлы между каталогами. Действительно ли возможно дать в R команду как cp patha/filea*.csv pathb (заметьте подстановочный знак для дополнительной специи)?

31
задан MichaelChirico 30 August 2016 в 00:20
поделиться

2 ответа

Я не думаю, что есть прямой путь (стесняюсь выкладывать деньги), но что-то вроде следующего обычно работает для меня.

flist <- list.files("patha", "^filea.+[.]csv$", full.names = TRUE)
file.copy(flist, "pathb")

Примечания:

  • Я намеренно разложил на два шага, их можно объединить.
  • Смотрите регулярное выражение: R использует true regex, а также отделяет шаблон файла от пути, в двух отдельных аргументах.
  • обратите внимание на ^ и $ (начало/конец строки) в regex - это распространенная ошибка, поскольку они неявные для шаблонов типа wildcard, но обязательные для regex (чтобы не выбрать имена файлов, которые соответствуют шаблону wildcard, но начинаются и/или заканчиваются дополнительным текстом).
  • В мире Windows люди обычно добавляют аргумент ignore.case = TRUE к list.files, чтобы эмулировать тот факт, что поиск по каталогам не чувствителен к регистру в этой ОС. Функция
  • R glob2rx() предоставляет удобный способ преобразования шаблонов подстановочных знаков в регулярные выражения. Например, fpattern = glob2rx('filea*.csv') возвращает другой, но эквивалентный regex.
46
ответ дан 27 November 2019 в 22:12
поделиться

Вы можете

  • использовать system () , чтобы запустить команду, как если бы она была в оболочке, включая подстановку
  • , используйте list.files () aka dir () , чтобы выполнить подстановку / reg.exp, сопоставив себя и скопировать файлы по отдельности
  • , используйте file.copy на индивидуальном файлы, как показано в ответе mjv
12
ответ дан 27 November 2019 в 22:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: