以下玩具数据有 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
解决方法是使用嵌套
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