#r #export
#r #экспорт
Вопрос:
У меня есть первый список, подобный этому:
[[First]]
y sum_1
1 2009 35
2 2010 30
3 2011 20
[[Second]]
y sum_1
1 2009 6
2 2010 21
3 2011 40
второй список:
[[First]]
y sum_2
1 2009 20
2 2010 30
3 2011 12
[[Second]]
y sum_2
1 2009 9
2 2010 24
3 2011 33
и другие списки.
Я хотел бы экспортировать каждый элемент списка на другой лист того же файла Excel. Я сделал это с помощью этого кода:
wb <- createWorkbook()
Map(function(data, nameofsheet){
addWorksheet(wb, nameofsheet)
writeData(wb, nameofsheet, data)
}, listofdfs, names(listofdfs))
saveWorkbook(wb, file = "C:\Users\prova.xlsx", overwrite = TRUE)
Но это работает для одного списка. Я не знаю, как «добавить» «Первый» элемент второго списка к «Первому» элементу первого списка на листе Excel, затем «Второму» и так далее.
Спасибо!
Комментарии:
1. Нет, извините. Я просто забываю это сделать. Я сделал это для своего последнего вопроса, и я постараюсь запомнить для следующих. Еще раз спасибо, что напомнили мне!
Ответ №1:
Мы можем связать список фреймов данных в один, а затем разделить их на основе имени и использования write.xlsx
.
library(openxlsx)
library(dplyr)
data <- bind_rows(list1, .id = 'id') %>%
bind_rows(bind_rows(list2, .id = 'id')) %>%
split(.$id)
write.xlsx(data, file = "data.xlsx")
данные
где list1
list2
в ответе :
list1 <- list(First = structure(list(y = 2009:2011, sum_1 = c(35L, 30L,
20L)), class = "data.frame", row.names = c("1", "2", "3")),
Second = structure(list(y = 2009:2011, sum_1 = c(6L, 21L, 40L)),
class = "data.frame", row.names = c("1", "2", "3")))
list2 <- list(First = structure(list(y = 2009:2011, sum_2 = c(20L, 30L,
12L)), class = "data.frame", row.names = c("1", "2", "3")),
Second = structure(list(y = 2009:2011, sum_2 = c(9L, 24L, 33L)),
class = "data.frame", row.names = c("1", "2", "3")))
Комментарии:
1. Спасибо, это сработало! Вы также знаете, как добавить одну / две пустые строки между добавленными фреймами данных в файле Excel и добавить заголовок для «таблицы»?
2. Нет, я не уверен, как включить это в текущий ответ.