我正在编写一些函数,我需要帮助弄清楚 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) 应该可以。关于为什么我需要使用这些额外的括号 () 的任何信息都会很棒。非常感谢。
注意:请注意,我查看了这个答案,但我的问题将是现有答案的扩展。谢谢你。
如果您更改函数
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