R-全局和功能环境:变量定义



我有一个问题对我来说似乎很奇怪。为什么以下没有给我错误?

foo <- function(a, b) {
  a <- 2
  a * b
}
b <- 7
foo(a, b)
[1] 14

但是

exists("a")
[1] FALSE

为什么我认为foo(a, b)应该导致Error: object 'a' not found

我错了

foo(a,b)不返回错误,因为您在函数本身中设置了变量a <- 2。该功能实际上从未使用您通过的a,因此您不会遇到错误。

如果您评论a<-2,那么您将获得预期的错误。exists默认检查全局环境,而不是在函数中创建的变量的存在。

相关内容

  • 没有找到相关文章

最新更新