如何在R语言中更新函数的...参数并返回至父函数?
解决R中可变参数(...)的修改与传递问题
原代码的问题
- R里没法直接给
...赋值——...是用来接收不定数量参数的特殊语法,不是普通变量,不能直接修改赋值。 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
相关产品推荐
相关产品推荐

