`purrr:map()` 打印列表中的项目及其名称

Jer*_* K. 3 r purrr tidyverse

我有一个简单的问题,我希望能够使用purrr::map()它。

我有一个命名项目列表(此示例使用mtcars数据集):

var_labels <- list(cyl = "气缸数",
                  disp =“位移”)

我可以打印所有chr列表项(打印是我真正问题的简化):

print_label <- 函数(x){
  打印(x)
}

地图(var_labels,打印_标签)

这使:

>[1]“气缸数”
>[1]“位移”
>$缸
>[1]“气缸数”
>
>$显示
>[1]“位移”

但我似乎无法打印列表项及其名称:

print_item_and_name <- 函数(x){
  打印(x)
  打印(名称(x))
}

地图(var_labels,print_item_and_name)

这给了我 NULL:

>[1]“气缸数”
>空
>[1]“位移”
>空
>$缸
>空

>$显示
>空

我真正的问题不仅仅是打印项目及其名称,但我怀疑如果我能找到这个简化步骤的解决方案,我应该能够解决我的真正问题。

期望的输出是:

>[1]“气缸数”
> “圆柱”
>[1]“位移”
     “显示”

Ron*_*hah 5

map无权访问列表中的名称。为此imap使用:

print_item_and_name <- function(x, y){
   print(x)
   print(y)
}

purrr::imap(var_labels, print_item_and_name)
Run Code Online (Sandbox Code Playgroud)

names您还可以单独传递并使用map2

purrr::map2(var_labels, names(var_labels), print_item_and_name)
Run Code Online (Sandbox Code Playgroud)

mapply这与在基础中使用/相同Map

Map(print_item_and_name, var_labels, names(var_labels))
Run Code Online (Sandbox Code Playgroud)