добавление элементов разных списков в разные таблицы Excel в R

#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. Нет, я не уверен, как включить это в текущий ответ.