use*_*376 2 r function parameter-passing
我在另一个函数中有一个函数,如下所示:
func2 <- function(x=1) {ko+x+1}
func3= function(l=1){
ko=2
func2(2)+l
}
func3(1)
Run Code Online (Sandbox Code Playgroud)
它显示错误:Error in func2(2) : object 'ko' not found。基本上我想使用ko在调用func2之前不会定义的对象。func3有什么解决办法吗?
是的,可以修复:
func2 <- function(x=1) {ko+x+1}
func3= function(l=1){
ko=2
assign("ko", ko, environment(func2))
res <- func2(2)+l
rm("ko", envir = environment(func2))
res
}
func3(1)
#[1] 6
Run Code Online (Sandbox Code Playgroud)
如您所见,这非常复杂。这通常表明您没有遵循良好的做法。好的做法是作为ko参数传递:
func2 <- function(x=1, ko) {ko+x+1}
func3= function(l=1){
ko=2
func2(2, ko)+l
}
func3(1)
#[1] 6
Run Code Online (Sandbox Code Playgroud)