sed*_*siv 1 r global-variables
我有一个对我来说很奇怪的问题.为什么以下不会给我一个错误?
foo <- function(a, b) {
a <- 2
a * b
}
b <- 7
foo(a, b)
[1] 14
Run Code Online (Sandbox Code Playgroud)
但
exists("a")
[1] FALSE
Run Code Online (Sandbox Code Playgroud)
为什么我错在foo(a, b)应该导致的期望Error: object 'a' not found?
foo(a,b)因为您a <- 2在函数本身中设置了变量,所以不会返回错误.该函数从未实际使用a您传递的函数,因此您不会收到错误.
如果你注释掉a<-2,那么你将得到预期的错误.exists默认情况下检查全局环境,而不是在函数中创建的变量的存在.