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

如何在R语言中更新函数的...参数并返回至父函数?

解决R中可变参数(...)的修改与传递问题

原代码的问题

  1. R里没法直接给...赋值——...是用来接收不定数量参数的特殊语法,不是普通变量,不能直接修改赋值。
  2. child_2里的print(args$y = 10)是语法错误,赋值操作不能放在print()的参数里,得改成读取args$y的值再打印。

修正后的可运行代码

parent <- function(x, ...){
  # 获取child修改后的参数列表
  updated_args <- child(x, ...)
  # 用do.call把x和更新后的参数传给child_2
  do.call(child_2, c(list(x = x), updated_args))
}

child <- function(x, ...){
  args <- list(...)
  args$y = 10 # 修改y的取值
  return(args)
}

child_2 <- function(x, ...){
  args <- list(...)
  print(args$y) # 打印更新后的y值
}

# 测试调用
parent(x=1,y=2)

关键改动说明

  • parent函数:
    先把...传入child拿到修改后的参数列表,再用do.call()来调用child_2。c(list(x = x), updated_args)会把x和更新后的参数合并成一个完整的参数列表,do.call()会自动把这个列表拆解成child_2的调用参数,相当于手动写child_2(x=1, y=10)。
  • child_2函数:
    修正了print语句的语法错误,现在能正确输出更新后的y值。

运行这段代码后,控制台会输出10,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 15:05:16