Написать на новый лист в цикле - PullRequest
0 голосов
/ 08 февраля 2020

Мой l oop полностью выполняет то, что я хочу, кроме записи данных, которые я хочу, чтобы l oop просматривал и каждый раз открывал новый лист, он не делает этого, а просто перезаписывает данные в одном файле Excel. Мой код:

file2 <- paste("filelocation", sep = "")
write.xlsx(Combined, file2, sheetName = (i))

Я не знаю, почему это не работает, так как этот код работает для меня ранее в коде.

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

Вот простой пример, который пишет рабочую книгу с тремя одинаковыми листами. Измените содержимое листа в соответствии с ...

library(openxlsx)

wb = createWorkbook()
for (i in 1:3) {
  sheet_name = paste('mtcars', i)
  addWorksheet(wb, sheet_name)
  writeData(wb, sheet_name, mtcars)
}

saveWorkbook(wb, 'my_workbook.xlsx')
1 голос
/ 08 февраля 2020
write.xlsx(Combined, file2, sheetName = (i), append=TRUE)

Из xlsx документации:

append логическое значение, указывающее, следует ли добавить x в существующий файл. Если TRUE, файл читается с диска.

Редактировать:

Это не работает - Наташа Джонс

Этот код работает для меня как и предполагалось:

library(xlsx)
write.xlsx(mtcars, "test.xlsx", sheetName ="firstSheet")
write.xlsx(mtcars, "test.xlsx", sheetName ="secondSheet", append=TRUE)
write.xlsx(mtcars, "test.xlsx", sheetName ="thirdSheet", append=TRUE)

Полученный файл .xlsx имеет 3 листа! Вы должны передать символьную строку аргументу sheet

sheetName символьную строку с именем листа. Т.е.

for (i in 1:4) {
  write.xlsx(mtcars, "test.xlsx", sheetName = as.character(i), append=TRUE)
}

Это работает и для меня ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...