R-内部函数变量问题

问题描述 投票:0回答:1

我正在编写一些函数,我需要帮助弄清楚 R 中内部函数的工作原理。我有这个测试 R 代码:

func1 <- function(a, b) {
  l <- a * 10
  m <- b * 20
  func2 <- function() {
    n <- l * m
  }
  func3 <- function() {
    o <- n/2
    o
  }
}

在 R 控制台中使用以下代码时,它会向我抛出一个错误,提示找不到 R 对象 n

func1(a=1, b=2)()

你能帮我找出我做错了什么吗?我假设当我在同一函数中调用变量时,它应该读入。

另外,函数调用 func1(a=2, b=2) () 是调用该函数的唯一方法吗?我想 func1(a=2, b=2) 应该可以。关于为什么我需要使用这些额外的括号 () 的任何信息都会很棒。非常感谢。

注意:请注意,我查看了这个答案,但我的问题将是现有答案的扩展。谢谢你。

r function environment-variables global-variables
1个回答
0
投票

如果您更改函数

func2()
func3
以接受
l
m
作为参数,然后在
func3()
末尾添加对
func1()
的调用,您可以使用一对
()
并且参数被正确转发。

func1 <- function(a, b) {
  l <- a * 10
  m <- b * 20
  func2 <- function(l, m) {
    n <- l * m
  }
  func3 <- function(l, m) {
    o <- func2(l, m)/2
    o
  }
  func3(l, m)
}

func1(a=1, b=2)
#> [1] 200
© www.soinside.com 2019 - 2024. All rights reserved.