如何在运行函数时获取列表中命名DataFrame的名称?
解决方案
方法1:使用imap()函数(推荐)
purrr包的imap()是为命名列表量身打造的工具,它会自动将列表元素和对应的名称一起传递给自定义函数。修改代码如下:
library(tidyverse) df_list<-list() df_list$iris1<-iris[1:50,] df_list$iris2<-iris[51:100,] df_list$iris3<-iris[101:150,] # 给函数添加name参数,接收DataFrame的名称 df_name<-function(df, name){ df%>% mutate(df_name = name) } # 用imap替代map,自动传递元素与名称 imap(df_list, df_name)
方法2:使用map2()配合列表名称
如果你更习惯用map2(),可以手动把列表的名称向量作为第二个输入参数传入:
library(tidyverse) df_list<-list() df_list$iris1<-iris[1:50,] df_list$iris2<-iris[51:100,] df_list$iris3<-iris[101:150,] df_name<-function(df, name){ df%>% mutate(df_name = name) } # map2接收两个等长对象:df_list和它的名称向量 map2(df_list, names(df_list), df_name)
效果验证
执行后,每个DataFrame都会新增一列df_name,值为该DataFrame在列表中的命名(如iris1、iris2、iris3)。
内容的提问来源于stack exchange,提问作者Basil
相关产品推荐
相关产品推荐

