как назначить имя элемента списка для sheetName - PullRequest
2 голосов
/ 19 июня 2020

Я пытаюсь присвоить имя каждого элемента списка параметру sheetName в файле write.xlsx при создании новых листов для каждого элемента. Я не уверен, как разработать часть sheetNumber, чтобы элементы находились на одном листе. Вот пример:

list_df = list('a'=data.frame(test1=NA,test2=NA),'b'=data.frame(test3=NA,test4=NA))
purrr::imap(list_df, ~write.xlsx(.x, "test.xlsx", sheetName = .y))

Обратите внимание, что это новое изменение было частичным решением другого участника.

Ответы [ 2 ]

2 голосов
/ 19 июня 2020

Если у вас есть именованный список фреймов данных, вы можете напрямую передать его команде write.xlsx.

openxlsx::write.xlsx(list_df, 'test.xlsx')
1 голос
/ 19 июня 2020

Вы можете использовать purrr::pwalk

purrr::pwalk(
    list(list_df, names(list_df), names(list_df) != names(list_df)[1]),
    function(x, y, z) write.xlsx(x, "test.xlsx", sheetName = y, append = z))

Третий аргумент z - это запись логического вектора, то есть FALSE для первого элемента вашего списка и TRUE для всех другие элементы, и это определяет, добавляем ли мы листы в файл Excel (верно для всех элементов списка, кроме первого).

Обратите внимание, что это основано на функции write.xlsx из пакета xlsx. Кажется, что openxlsx::write.xlsx может напрямую записывать именованный список на несколько листов, см. Ответ @ RonakShah.

...