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

时间:2017-09-28 23:47:02

标签: r global-variables

我有一个对我来说很奇怪的问题。为什么以下不会给我一个错误?

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的期望错误?

1 个答案:

答案 0 :(得分:5)

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

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