R: Сохранение вывода в виде xlsx в цикле for - PullRequest
0 голосов
/ 27 августа 2018

Использование пакета (openxlsx) для записи файлов xlsx. У меня есть переменная, которая является вектором чисел

x <- 1:8

Затем я вставляю «.xlsx» в конец каждого элемента x, чтобы позже создать файл xlsx

new_x <- paste(x,".xlsx", sep = "")

Затем я пишу .xlsx, используя пакет ("openxlsx") в forloop для создания новых файлов xlsx

for (i in x) {
for (j in new_x) {
write.xlsx(i,j)
}}

Когда я открываю («1.xlsx» - «8.xlsx»), все файлы имеют только номер «8». Чего я не понимаю, так это того, почему у него нет номера 1 для 1.xlsx - 7 для 7.xlsx, почему восьмой перезаписывает все остальное.

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

for (i in x) {
for (j in new_x) {
output[[i]] <- i    

write.xlsx(output[[i]],j)
}}

И все равно возникает та же проблема. Я не понимаю, что происходит не так.

1 Ответ

0 голосов
/ 27 августа 2018

Проблема в том, что вы создаете каждый файл Excel несколько раз, потому что у вас есть вложенные циклы. Попробуйте просто использовать один цикл и ссылаться на элемент new_x.

x <- 1:8
new_x <- paste(x,".xlsx", sep = "")
for (i in seq_along(x)) {
    write.xlsx(i,new_x[i])
}

Если вы хотите прочитать несколько файлов .csv и сохранить их как файлы xlsx, это аналогичный подход, вы все равно хотите иметь только один цикл for, такой как:

# Define directory of where to look for csv files and where to save Excel files
csvDirectory <- "C:/Foo/Bar/"
ExcelDirectory <- paste0(Sys.getenv(c("USERPROFILE")),"\\Desktop")

# Find all the csv files of interest
csvFiles <- list.files(csvDirectory,"*.csv")

# Go through the list of files and for each one read it into R, and then save it as Excel
for (i in seq_along(csvFiles)) {
  csvFile <- read.csv(paste0(csvDirectory,"/",csvFiles[i]))
  write.xlsx(csvFile, paste0(ExcelDirectory,"/",gsub("\\.csv$","\\.xlsx",csvFiles[i])))
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...