正在从purrr获取地图以使用paste0

正在从purrr获取地图以使用paste0,r,dplyr,purrr,R,Dplyr,Purrr,我有9个列表,下面有对象分组$ag。我试图从9个列表中的每一个列表中提取该对象,并将它们列成一个tibble/df。第一列的分组应为1:5。随后的9列每个列都是一个简单的向量,包含5个数字。抱歉,这不完整且不可复制 map(hof2009\u ag$groupings,“ag”)%%>%unlist将正确地给我一个向量 [1] 789 615 525 425 352 但是,如果动态使用带有paste0的map,它将无法工作: map(粘贴0(“hof”,i,“\u ag$groupings”)

我有9个列表,下面有对象分组$ag。我试图从9个列表中的每一个列表中提取该对象,并将它们列成一个tibble/df。第一列的分组应为1:5。随后的9列每个列都是一个简单的向量,包含5个数字。抱歉,这不完整且不可复制

map(hof2009\u ag$groupings,“ag”)%%>%unlist
将正确地给我一个向量

[1] 789 615 525 425 352
但是,如果动态使用带有paste0的map,它将无法工作:
map(粘贴0(“hof”,i,“\u ag$groupings”),“ag”)

因此,我试图通过for循环使用迭代器访问9个列表,标题为hof2009:hof2017。当我尝试使用paste0动态创建我的hof(I)_ag$分组时,它不再适用于map

ag <- tibble(group=1:5)
for (i in 2009:2017) {
temp <- paste0("hof", i,"_ag$groupings") #works, "hof2009_ag$groupings"
TEST <- temp %>% map("ag") %>% unlist #fails, produces NULL
TEST <- hof2009_ag$groupings %>% map("ag") %>% unlist #works, produces 789 615 525 425 352
#ag <- map(temp, "ag") %>% unlist #doesn't work on "temp"
}
我得到:

List of 1
 $ hof2009_ag:List of 5
 ..$ :List of 6
 .. ..$ prefs   :'data.frame':  14 obs. of  1 variable:
.. .. ..$ rank: int [1:14] 0 3 3 4 1 0 1 2 1 0 ...
.. ..$ ag      : int 789
.. ..$ grp     : int [1:60] 1 1 1 1 1 1 1 1 1 1 ...
.. ..$ iters   : num 1
.. ..$ run_time: Named num 1.13
.. .. ..- attr(*, "names")= chr "elapsed"
..$ :List of 6
.. ..$ prefs   :'data.frame':   14 obs. of  2 variables:
.. .. ..$ rank  : int [1:14] 0 3 4 5 2 1 2 3 1 1 ...
.. .. ..$ rank.1: int [1:14] 2 4 4 5 1 0 3 3 2 1 ...
.. ..$ ag      : int 615
.. ..$ grp     : int [1:60] 1 1 1 1 1 1 1 1 1 1 ...
.. ..$ iters   : num 4
.. ..$ run_time: Named num 5.61
.. .. ..- attr(*, "names")= chr "elapsed"
编辑:使用dput的示例

> dput(hof2009_ag)
列表(决策者=c(“Phil.Arvia”、“Steve.Aschburner”、“Filip.Bondy”、“Bob.Verdi”),备选方案=c(“Harold.Baines”、“Bert.Blyleven”、“Alan.Trammell”
),数字决策者=60L,数字alts=14L,分组=列表(列表(首选项=结构(列表(秩=c(0L,3L,3L,4L,1L,0L,1L)),class=“data.frame”,row.names=c(“Harold.Baines”,“Bert.Blyleven”,“Alan.Trammell”)),ag=789L,grp=c(1L,1L,1L),iters=1,运行时间=c(已用时间=1.12999999738),grp2=结构(列表(决策者=c(“菲尔·阿维娅”、“史蒂夫·阿斯伯恩”、“菲利普·邦迪”、“戴夫·范·戴克”、“鲍勃·威尔第”)、组号=c(“1”、“1”、“1”、“1”)、行名=c(NA,-60L)、类名=c(“tbl_-df”、“tbl”、“data.frame”)、列表(prefs=structure(list)(秩=c(秩=c(0L、3L、2L)、秩.1=c(2L、4L、2L))、class=“data.frame”、行名=c(“Harold.Baines”、“Bert.blven”、”安德烈·道森、艾伦·特拉梅尔、ag=615L、grp=c(1L、1L、1L)、iters=4、运行时间=c(已用时间=5.6100000000058)、grp2=结构(列表(决策者=c(“Phil.Arvia”、“Steve.Aschburner”、“Steve.Wilmoth”、“Dave.Van.Dyck”、“Bob.Verdi”)、组号=c(“1”、“1”、“1”、“1”)、行名=c(NA,--60L)、类别=c(“tbl”、“tbl”、“tbl””数据帧),列表(优先级=结构(列表(秩=c(0L,3L,1L,1L),秩.1=c(0L,4L,2L),秩.2=c(1L,2L))一个可复制的示例将非常有用。根据显示的代码,使用
mget
paste
获取全局环境中的对象,然后循环遍历
列表
元素,
选择
分组
列表
元素和带有
$
的“ag”(嵌套
列表
)元素[[

library(tidyverse)
mget(paste0("hof", 2009:2017, "_ag")) %>%
        map(~ map(.x$groupings, ~ .x$ag)) 

最好使用
[[
而不是
$
。此外,如果这些对象位于全局环境中,请使用
mget
,即
mget(paste0(“hof”,2009:2017,“_ag”))%%>%map(~.x%>%select(groupings))%%>%unlist
如果没有一个小的可复制示例,则不清楚快速澄清:我的对象在hof_2009:2017$groupings$ag下。那么map应该选择groupings,然后是ag吗?我认为对代码稍加调整就可以了…这可能会有所帮助。.groupings是hof_2009:2017$groupings下的子列表。ag是groupings下的列表。所以列也不是。我是否需要进行双重映射?比如:$hof2017_ag$groupings[[5]]$
ag
[1]5173ah。我认为映射需要在分组内完成,因为没有分组$ag,只有分组[[I]]$ag。因此,在进行分组之前,需要拆分5个分组extracted@DSchiff你能检查一下mget(paste0(“hof”,2009:2017)的输出吗_ag”)%%>%map(~.x$groupings%%>%map(.x%>%pull('ag'))你打赌:还没有运气!UseMethod(“pull”)中的错误:没有适用于“pull”的方法应用于类“list”@DSchiff的对象。你能用
dput
更新你的帖子吗?这样我就可以测试它了
library(tidyverse)
mget(paste0("hof", 2009:2017, "_ag")) %>%
        map(~ map(.x$groupings, ~ .x$ag))