在数据框上执行 purrr 式 lambda 公式列表

问题描述 投票:0回答:1

以下玩具数据有 5 个变量,

X1
X5

set.seed(123)
df <- data.frame(matrix(rnorm(500), 100, 5))

我想使用 purrr 式 lambda 公式的命名列表对特定变量执行特定操作

fun_list <- list(
  X2 = ~ quantile(.x, c(0.1, 0.9), na.rm = TRUE),
  X4 = ~ fivenum(.x, na.rm = TRUE)
)

如何根据变量名称将

fun_list
应用到我的
df

我知道

rlang::as_function()
可以将 purrr 式公式转换为 R 函数。但我猜想有一些函数能够本质上处理 purrr 式的公式。它的用法可能是

execute(fun_list, environment = df)

预期输出是

$X2
      10%       90% 
-1.289408  1.058432 

$X4
[1] -2.465898194 -0.737146704 -0.003508661  0.693634712  2.571458146
r list purrr rlang lambda-calculus
1个回答
0
投票

解决方法是使用嵌套

map
:

imap(fun_list, \(f, var) map(df[var], f)[[1]])

# $X2
#       10%       90% 
# -1.289408  1.058432 
# 
# $X4
# [1] -2.465898194 -0.737146704 -0.003508661  0.693634712  2.571458146
© www.soinside.com 2019 - 2024. All rights reserved.