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

R中函数传入向量而非单个值时出错的技术问询

解决批量计算PAFPM2.5的参数错误问题

核心问题

报错Error in PAF.summary(...) : unused arguments (...)的直接原因是你调用函数时传入的参数名,和PAF.summary函数定义的参数名不匹配。比如函数定义的参数是RR.low、RR.up、RR.est,但你调用时用了low=、up=、est=,R会判定这些参数未被函数定义,因此报错。

修复步骤

1. 核对参数名,修正调用方式

先查看函数的定义(运行print(PAF.summary)),确认形参名称。假设函数定义是:

PAF.summary <- function(RR.low, RR.up, RR.est) {
  # 你的PAF计算逻辑
}

那调用时必须使用对应参数名:

PAF.summary(RR.low = sectors$RR.low, RR.up = sectors$RR.up, RR.est = sectors$RR.est)

2. 确保函数支持向量输入

如果参数名匹配后仍报错,说明函数本身只处理单个值,未做向量化适配。可以用两种方式解决:

  • 快速包装:用Vectorize()
    把原函数包装成支持向量输入的版本:
    PAF.summary_vec <- Vectorize(PAF.summary)
    # 调用包装后的函数
    batch_result <- PAF.summary_vec(RR.low = sectors$RR.low, RR.up = sectors$RR.up, RR.est = sectors$RR.est)
    
  • 逐元素处理:用purrr::pmap
    如果函数逻辑复杂,Vectorize()不适用,用pmap逐行传入参数:
    library(purrr)
    batch_result <- pmap(list(sectors$RR.low, sectors$RR.up, sectors$RR.est), PAF.summary)
    

3. 小批量测试验证

先取少量数据测试,确认逻辑正确后再跑全量:

# 测试前3组数据
test_result <- PAF.summary(RR.low = sectors$RR.low[1:3], RR.up = sectors$RR.up[1:3], RR.est = sectors$RR.est[1:3])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:01:01