I want to change some elements of ...
argument in the child
function and return it back to the parent
function. So the ...
is updated within the parent function. I give my idea and a simple example below (not working yet):
parent <- function(x, ...){
... <- child(x, ...) # expect to return and update ...
child_2(x, ...)
}
child <- function(x, ...){
args <- list(...)
args$y = 10 # change value
return(args)
}
child_2 <- function(x, ...){
args <- list(...)
print(args$y = 10) # expect y = 10
}
parent(x=1,y=2)
How can I realize my idea and make it workable?
CodePudding user response:
Use do.call
:
parent <- function(x, ...){
args <- child(x, ...) # expect to return and update ...
do.call("child_2", c(x = x, args))
}
child <- function(x, ...){
args <- list(...)
args$y = 10 # change value
return(args)
}
child_2 <- function(x, ...){
args <- list(...)
print(args$y) # expect y = 10
}
parent(x=1,y=2)
## [1] 10
Old
The question was changed. This was the answer to the original question.
Change parent
as shown. child
is unchanged.
parent <- function(x, ...) {
args <- child(x, ...)
args$y
}
parent(x=1,y=2)
## [1] 10