我想在地图函数中提取数据框的名称。 因此,我创建了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]]"
有人可以帮我解决这个问题吗?
答案 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))