#r #excel #openxlsx
#r #excel #openxlsx
Вопрос:
Я пытаюсь создать функцию для экспорта нескольких элементов списка в книгу Excel с разными листами.
Я получаю сообщение об ошибке:
«Ошибка в if (nchar(SheetName)> 31) {: отсутствует значение, где требуется TRUE / FALSE».
Моя попытка приведена ниже:
library("openxlsx")
data <- list("ABCD", "EFGH")
names(data) <- c("X", "Y")
#x = list, y = file name
createWorksheet <- function(x, y){
wb <- createWorkbook()
for(i in x){
addWorksheet(wb, names(x)[i])
writeData(wb, sheetName = names(x)[i], x[[i]])
saveWorkbook(wb, file = y, overwrite = TRUE)
}
}
createWorksheet(data, "data.xlsx")
Есть идеи, что не так?
Комментарии:
1. Вам нужно
for(i in seq_along(x))
вместоfor(i in x)
?2. Вы правы. Я думал, что циклы for будут просто предполагать 1:length(x) для 2-го аргумента.
Ответ №1:
С помощью Аллана:
library("openxlsx")
data <- list("ABCD", "EFGH")
names(data) <- c("X", "Y")
#x = list, y = file name
createWorksheet <- function(x, y){
wb <- createWorkbook()
for(i in seq_along(x)){
addWorksheet(wb, names(x)[i])
writeData(wb, sheet = names(x)[i], x[[i]])
saveWorkbook(wb, file = y, overwrite = TRUE)
}
}
createWorksheet(data, "data.xlsx")