R 在tible列上循环时获取映射循环元素的名称

R 在tible列上循环时获取映射循环元素的名称,r,dplyr,tidyverse,purrr,R,Dplyr,Tidyverse,Purrr,我想在使用map循环时提取当前列的列名。例如,如果某些变量: library(tidyverse) d <- tibble(a = runif(10), b = runif(10), c = runif(10)) l <- list(a = list(min = -19, max = 20), b = list(min = 22, max = 55), c = list(min = 80, max = 120)) restore <- function(x, r) x * (r

我想在使用map循环时提取当前列的列名。例如,如果某些变量:

library(tidyverse)
d <- tibble(a = runif(10), b = runif(10), c = runif(10))
l <- list(a = list(min = -19, max = 20), b = list(min = 22, max = 55), c = list(min = 80, max = 120))
restore <- function(x, r) x * (r$max - r$min) + r$min
my_cols <- c("a", "c")
d %>%
  select(!!!my_cols) %>%
  map(~restore(.x, l[[name(.x)]]))
# Error in name(.x) : could not find function "name"
库(tidyverse)

d使用
imap
from
purr
轻松操作

请注意,使用公式快捷方式时,第一个参数是值(
.x
),第二个参数是位置/名称(
.y

有关详细信息,请参阅
imap
上的帮助页面。但实际上,如果要迭代的对象有名称,那么函数的第二个参数(
.y
)就是名称(否则就是位置)

库(TIBLE)
图书馆(purrr)
图书馆(dplyr)

你能告诉我,
.y
为什么是这个栏目的名称吗?(第一个元素是值,imap的第二个元素是位置,如果顺序相同,我很好?)