R中如何将一个函数的输出传递给另一个函数?

Ami*_*deh 3 r user-defined-functions

所以我想将 func1 的输出传递给 func2。

func1 <- function(x, y, z) {
    k = x*2
    j = y*2
    i = z*2
}

func2 <- function(x, y, z) {
    func1(x, y, z)
    m = k * j * i
    return (m)
}
Run Code Online (Sandbox Code Playgroud)

它不断打印错误。

Ano*_*n R 6

这是另一个解决方案。这称为 a function factory,意思是创建另一个函数的函数。由于func2仅使用 的输出,因此它可以通过其父环境(即 的执行环境)func1找到它们。只需注意我为了调用该函数而使用的额外一对括号,因为第一个函数的输出是一个函数。lexical scopingfunc1

func1 <- function(x, y, z) {
  k <- x * 2
  j <- y * 2
  i <- z * 2
  func2 <- function() {
    m <- k * j * i
    m
  }
}

func1(1, 2, 3)()
[1] 48
Run Code Online (Sandbox Code Playgroud)

有关更多信息,您可以阅读Hadley Wickham 的 Advanced R 的这一部分。