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

如何在tibble指定列存储函数与输入数据,逐行迭代执行?

问题原因
  1. 首次调用map报错的核心问题是:map的第二个参数.f需要传入单个函数/公式对象,但你传入的是包含2条公式的整个summarise_func列表列,映射逻辑不匹配,无法对应到每行数据。
  2. 后续尝试转换函数报错「无法将列表转换为函数」的原因是:你在匿名函数中直接调用rlang::as_function(summarise_func),每次迭代都会把整个summarise_func列表列传入转换接口,自然无法把列表转成单个函数。
解决方案

你需要同时迭代「筛选后的数据列」和「聚合函数字段列」,取同一行的两个值配对运算,用map2即可实现:

trb_1 %>%
  mutate(dat_summarised = map2(
    .x = dat_selected,
    .y = summarise_func,
    .f = ~ rlang::as_function(.y)(.x)
  ))

逻辑说明

  • map2会逐行遍历dat_selected和summarise_func两个列表列,保证每次取同一行的数据和对应公式
  • 每次迭代时,先把当前行的单条公式.y通过rlang::as_function转成可执行的函数,再传入当前行的筛选后数据.x执行,即可得到对应聚合结果

运行后得到的dat_summarised列和你预期的输出完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:15:04