Легко с imap
из purrr
.
Обратите внимание, что при использовании ярлыка формулы первый аргумент - это значение (.x
), а второй - позиция / имя (* 1006).*).
Подробнее см. На странице справки по imap
.Но, по сути, если объект, который вы перебираете, имеет имена, то вторым аргументом (.y
) функции является имя (в противном случае это позиция).
library(tibble)
library(purrr)
library(dplyr)
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) %>%
imap(~restore(.x, l[[.y]]))