Как конвертировать и экспортировать список файлов xlsx в файлы csv в R - PullRequest
0 голосов
/ 02 октября 2019

Я пытаюсь преобразовать большое количество файлов .xlsx в .csv, а также указываю новую папку или каталог для их размещения. В частности, я хочу создать новую папку в моем рабочем каталоге для размещениянедавно преобразованные файлы .csv.

На основании предыдущих примеров мне удалось завершить преобразование, используя следующий код

setwd("~/Myfolder")

files.to.read = list.files(pattern="xlsx")

lapply(files.to.read, function(f) {  
df = read.xlsx(f, sheetIndex=1)  
write.csv(df, gsub("xlsx", "csv", f), row.names=FALSE)})

Это успешно преобразует все файлы .xlsx в .csv в моем исходном рабочем каталоге. Однако я хочу создать новую подпапку в этом каталоге и поместить в нее эти файлы .csv. Я знаю, что ответ, вероятно, включает добавление либо dir.create(), либо file.path() к команде write.csv(). Однако, когда я использую любой из них, я получаю следующую ошибку.

Error in file(file, ifelse(append, "a", "w")) : invalid 'open' argument

1 Ответ

0 голосов
/ 02 октября 2019

Трудно понять без воспроизводимого примера. Что произойдет, если вы попытаетесь сделать read.xlsx(files.to.read[1], sheetIndex=1)?

Если это сработает, вы достаточно близки.

dir.create("your_folder_name")

files.to.read = list.files(pattern="xlsx")

lapply(files.to.read, function(f) {  
df = read.xlsx(f, sheetIndex=1)
# Make the new filename here
new_filename = file.path(getwd(), "your_folder_name", gsub("xlsx", "csv", f))  
write.csv(df, new_filename , row.names=FALSE)
# provide some feedback
print(paste("Writing", new_filename))
}
)

Возможно, ваша команда list.files() испытывает проблемы. Если предыдущий сбой, попробуйте:

# Mind the full.names=TRUE to get the full path
files.to.read = list.files(pattern="xlsx", full.names=TRUE)

и избавиться от строки new_filename. Вам не нужно создавать его с помощью file.path, просто используйте команду gsub, как вы это делали.

...