R 如何将列表元素名称指定给sheetName

R 如何将列表元素名称指定给sheetName,r,xlsx,R,Xlsx,我试图将每个列表元素的名称分配给write.xlsx中的sheetName,同时为每个元素创建新的工作表。我不知道如何计算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))

我试图将每个列表元素的名称分配给write.xlsx中的sheetName,同时为每个元素创建新的工作表。我不知道如何计算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))

请注意,此新编辑是另一个成员的部分求解。

您可以使用
purrr::pwalk

purrr::pwalk(
列表(list_-df,name(list_-df),name(list_-df)!=name(list_-df)[1]),
函数(x,y,z)write.xlsx(x,“test.xlsx”,sheetName=y,append=z))
第三个
z
参数是一个逻辑向量的输入,即列表中第一个元素的
FALSE
,以及所有其他元素的
TRUE
,并确定是否将工作表附加到Excel文件中(除第一个元素外的所有列表元素均为TRUE)


请注意,这是基于
xlsx
包中的
write.xlsx
函数实现的。似乎
openxlsx::write.xlsx
可以直接将命名列表写入多个工作表,请参见@RonakShah的答案。

如果您有数据帧的命名列表,可以直接将其传递给
write.xlsx
命令

openxlsx::write.xlsx(list_df, 'test.xlsx')

你好,斯帕佐诺。我删除了先前使用
imap
的尝试,因为它不太管用。请参阅下面使用
pwalk
的解决方案。我们需要使用参数
append
在使用第一个sheet.interest初始化文件后添加sheet。这不适用于
xlsx::write.xlsx
。我以前只使用过pmap,所以我很高兴学习了imap和pwalk。我还将尝试使用openxlsx软件包。非常感谢。是的,我几乎不使用excel编写东西,但当我这样做时,我主要使用
openxlsx
。感谢您提供的解决方案,并向我介绍pwalk!