You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按变量名在数据框上应用purrr风格lambda公式列表?

问题描述

现有模拟数据包含X1至X5共5个变量:

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中,希望找到能直接处理这类公式的函数,预期用法类似:

execute(fun_list, environment = df)

预期输出:

$X2
      10%       90% 
-1.289408  1.058432 

$X4
[1] -2.465898194 -0.737146704 -0.003508661  0.693634712  2.571458146
解决方案

方法1:用purrr::imap直接处理

imap支持同时遍历列表的元素和名称,刚好可以用列表名称匹配df中的变量,自动解析公式并执行:

library(purrr)

imap(fun_list, ~ .x(df[[.y]]))

方法2:用purrr::map2实现

提取fun_list的名称作为变量名向量,和公式列表一起传入map2,同样无需手动转换公式:

library(purrr)

map2(fun_list, names(fun_list), ~ .x(df[[.y]]))

方法3:封装成自定义execute函数

如果想要完全贴合你预期的调用方式,可以自己封装一个简单函数:

library(purrr)

execute <- function(fun_list, environment) {
  imap(fun_list, ~ .x(environment[[.y]]))
}

# 调用示例
execute(fun_list, environment = df)

以上方法都不需要手动调用rlang::as_function,purrr会自动处理公式风格的lambda函数,运行后即可得到预期输出。

内容的提问来源于stack exchange,提问作者user18894435

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 11:43:18