R - 在另一个函数内部的函数中定义一个对象

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有什么解决办法吗?

Rol*_*and 5

是的,可以修复:

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)