f <- function(x) {
a <- 1
x
}
f(ls())
在上面的代码中,对f(ls())的调用将在全局环境中打印出变量。
但是:
f <- function(x) {
a <- 1
x()
}
f(ls)
将在函数f的环境中打印出变量,即“ a”和“ x”。
答案 0 :(得分:1)
在第一种情况下,您传递ls()
的结果-这是环境中所有对象的向量。然后,您的函数仅显示x
传递的内容,即ls()
的结果。
在第二种情况下,您传递了一个函数,并且在函数体内执行了该函数。
基本上,您可以将呼叫的第一个版本考虑为:
x <- ls()
f(x)
再举一个例子:看看print(ls())
和print(ls)
之间的区别。