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

DuckDB R环境下一次性计算多列均值与中位数的实现问题

核心原因

DuckDB的dbplyr SQL翻译器暂时不支持向across()的.fns参数传入未命名的函数列表。本地处理内存中的R数据框时,dplyr可以直接解析这种写法;但需要将计算逻辑转换为SQL推送到DuckDB端执行时,未命名的函数列表无法完成正确的语法转换,因此运行失败。

可用解决方案

  • 方案1:将聚合函数改为命名列表格式,同时建议显式添加na.rm = TRUE参数避免空值导致结果异常,可直接运行的代码如下:
tbl(con, "mtcars") %>%
  summarise(across(
    everything(),
    list(mean = ~mean(.x, na.rm = TRUE), median = ~median(.x, na.rm = TRUE))
  ))
  • 方案2:如果需要更高的执行效率,也可以直接调用DuckDB原生的聚合函数名,跳过dplyr的翻译环节:
tbl(con, "mtcars") %>%
  summarise(across(
    everything(),
    list(mean = ~duckdb::sql("avg({.col})"), median = ~duckdb::sql("median({.col})"))
  ))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:54:07