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

如何简洁地使用多输出函数(如range)聚合stars对象?

用多输出函数聚合stars对象的解决方法

问题原因

aggregate.stars 默认要求聚合函数返回单个值,而 range() 会返回两个值(最小值和最大值),导致输出元素总数翻倍,与原对象的空间维度乘积不匹配,从而触发维度错误。

简洁解决方法

只需让聚合函数返回带维度的结构(如矩阵、命名向量),让 stars 识别为新增一个维度来存储多输出结果:

方法1:返回命名向量(推荐,维度标签更直观)

x_agg_time3 = aggregate(x, by = '2 days', FUN = \(x) c(min_val = min(x), max_val = max(x)))

执行后,结果会新增一个名为 values 的维度,标签为 min_val 和 max_val,可通过维度名提取对应结果:

# 提取最小值聚合结果
x_agg_time3[,,,min_val]
# 提取最大值聚合结果
x_agg_time3[,,,max_val]

方法2:返回转置矩阵

x_agg_time3 = aggregate(x, by = '2 days', FUN = \(x) t(range(x)))

range(x) 的结果被转置为1行2列的矩阵,stars 会自动新增一个长度为2的维度,可通过索引提取:

# 提取最小值(第1个位置)
x_agg_time3[,,,1]
# 提取最大值(第2个位置)
x_agg_time3[,,,2]

验证结果

查看处理后对象的维度,确认新增了存储多输出的维度:

dim(x_agg_time3)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 12:45:17