我首先定义了新变量x
,然后创建了在其主体内需要x
的函数(而不是作为参数)。请参阅下面的代码
x <- c(1,2,3)
f1 <- function() {
x^2
}
rm(x)
f2 <- function() {
x <- c(1,2,3)
f1()
}
f(2)
Error in f1() : object 'x' not found
当我删除 x
并定义新函数 f2
时,它首先定义 x
然后执行 f1
,它显示未找到对象x
。
我只是想知道为什么这不起作用以及如何克服这个问题。我不希望将 x
命名为 f1
中的参数。
请提供适当的标题,因为我不知道这是什么类型的问题。
最佳答案
您可以使用closure制作具有所需属性的 f1
:
makeF <- function(){
x <- c(1,2,3)
f1 <- function() {
x^2
}
f1
}
f1 <- makeF()
f1() #returns 1 4 9
全局范围内没有 x
,但 f1
仍然知道定义它的环境中的 x
。
关于r - 为什么这个简单的功能不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47485950/