#r #tidyverse #purrr #stringr
#r #tidyverse #муррр #stringr
Вопрос:
setwd("C:\Users\...\Documents\Main\eml orders")
files <- list.files(pattern="*.eml")
newfiles <- gsub(".eml$", ".txt", files)
file.rename(files, newfiles)
eml_files <- list.files(pattern = "txt$")
У меня есть этот код для преобразования файлов .eml в файлы .txt теперь я хочу переименовать те же файлы в строку, которую я создаю с помощью функции.
Пример функции
fetch_date <- function(x) {
date <- paste0(as.character(Sys.time()), ".txt")
file.rename(x, date)
}
Теперь я пытаюсь map(eml_files, fetch_date)
И получите эту ошибку:
cannot rename file '24 New order placed.txt' to '2020-11-14', reason 'The network path was not found'
Понятия не имею, что происходит, любая помощь будет оценена.
Комментарии:
1. Вам может понадобиться
full.names = TRUE
вlist.files
2. Та же ошибка:/ .
3. Внутри функции может потребоваться указать путь с помощью
file.path
4. я сделал
file.path("C:\Users\...\Documents\Main\eml orders")
внутри функции, и она все еще не работает. выдает одни и те же ошибки.5. Кажется, что ваш file.rename работает вне функции. Вы пробовали второй набор переименований без функции
Ответ №1:
Имейте в виду, что ваша fetch_date
функция выводит только одну строку ( Sys.date()
) . Он пытается назвать несколько .txt
объектов с одинаковым именем. На моем Mac это приводит к тому, что последние файлы сохраняются, а остальные перезаписываются. Возможно, вы используете Windows, и при перезаписи файлов по умолчанию используется другое поведение?
eml_files <- list.files(pattern = "txt$")
fetch_date <- function(x) {
date <- paste0(as.character(Sys.time()), ".txt")
file.rename(x, date)
}
map(eml_files, fetch_date)