在地图函数中提取数据框的名称

时间:2019-07-17 09:20:37

标签: r purrr

我想在地图函数中提取数据框的名称。 因此,我创建了3个示例数据框:

name_df1<-data.frame()
name_df2<-data.frame()
name_df3<-data.frame()

使用此代码,我得到了想要的东西:

deparse(substitute(name_df1))
[1] "name_df1"

现在我正在尝试将此代码放入map函数中,以提取所有3个数据框的名称:

但是首先我要创建一个所有数据框的列表,这是运行map函数的必要条件:

list_dfs<-ls()
[1] "list_dfs" "name_df1" "name_df2" "name_df3"

这是我的地图功能:

map(mget(list_dfs), function(x)
  deparse(substitute(x)))

But I get this:

$name_df1
[1] ".x[[i]]"

$name_df2
[1] ".x[[i]]"

$name_df3
[1] ".x[[i]]"

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

我认为通过单独传递名称和数据框在这里使用map2会更容易

library(tidyverse)

list_dfs<-ls(pattern = "name_df")
map2(mget(list_dfs), list_dfs, ~ggplot(.x) + .... + labs(title = .y))

答案 1 :(得分:0)

我们可以看到imap对返回的mget对象list进行此操作,因为list将是一个命名列表,而imap可以提取.y作为names

library(purrr)
library(dplyr)
library(ggplot2)
imap(mget(list_dfs), ~  ggplot(.x) + 
                            ... +
                            labs(title = .y))