gpt4 book ai didi

r - 循环遍历 tibble 列时获取 map-loop-element 的名称

转载 作者:行者123 更新时间:2023-12-05 00:46:07 25 4
gpt4 key购买 nike

我想在使用 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"

我怎样才能解决这个问题?

最佳答案

轻松使用 imap来自 purrr .

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

请参阅 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]]))

关于r - 循环遍历 tibble 列时获取 map-loop-element 的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54863140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com