如何将列表元素名称分配给 sheetName
how to assign list element name to sheetName
我正在尝试将每个列表元素的名称分配给 write.xlsx 中的 sheetName,同时为每个元素创建新的 sheet。我不确定如何算出 sheetNumber 部分以便在相同的 sheet 中获取元素。这是一个例子:
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))
请注意,这个新的编辑是另一位成员的部分解决。
您可以使用 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 文件(对于除第一个之外的所有列表元素都是正确的)。
请注意,这是基于 xlsx
包中的 write.xlsx
函数。貌似openxlsx::write.xlsx
可以直接将一个命名列表写到多个sheet,看@RonakShah的回答。
如果你有一个命名的数据帧列表,你可以直接将它传递给 write.xlsx
命令。
openxlsx::write.xlsx(list_df, 'test.xlsx')
我正在尝试将每个列表元素的名称分配给 write.xlsx 中的 sheetName,同时为每个元素创建新的 sheet。我不确定如何算出 sheetNumber 部分以便在相同的 sheet 中获取元素。这是一个例子:
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))
请注意,这个新的编辑是另一位成员的部分解决。
您可以使用 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 文件(对于除第一个之外的所有列表元素都是正确的)。
请注意,这是基于 xlsx
包中的 write.xlsx
函数。貌似openxlsx::write.xlsx
可以直接将一个命名列表写到多个sheet,看@RonakShah的回答。
如果你有一个命名的数据帧列表,你可以直接将它传递给 write.xlsx
命令。
openxlsx::write.xlsx(list_df, 'test.xlsx')