我正在尝试将每个列表元素的名称分配给 sheetName.xlsx,同时为每个元素创建新工作表。我不确定如何计算工作表编号部分以使元素在同一张工作表中。下面是一个示例:
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))
请注意,此新编辑是另一个成员的部分解决方案。
如果您有数据帧的命名列表,则可以将其直接传递给write.xlsx
命令。
openxlsx::write.xlsx(list_df, 'test.xlsx')
您可以使用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 文件(对于除第一个元素之外的所有列表元素为 true(。
请注意,这是基于xlsx
包中的write.xlsx
函数。看来openxlsx::write.xlsx
可以直接将一个命名列表写到多张纸上,看@RonakShah的答案。