Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中的函数参数求值_R_Function_Default Arguments - Fatal编程技术网

R中的函数参数求值

R中的函数参数求值,r,function,default-arguments,R,Function,Default Arguments,在过去的几周里,我一直在阅读哈德利·维克汉姆的《高级R》,其中有一个概念引起了我的注意,如果您能给我一个解释,我将不胜感激: 默认和用户的评估环境略有不同 提供的参数作为默认参数在 功能 本书给出了以下示例: h05 <- function(x = ls()) { a <- 1 x } # ls() evaluated inside h05: h05() #> [1] "a" "x" # ls() evaluated in global

在过去的几周里,我一直在阅读哈德利·维克汉姆的《高级R》,其中有一个概念引起了我的注意,如果您能给我一个解释,我将不胜感激:

默认和用户的评估环境略有不同 提供的参数作为默认参数在 功能

本书给出了以下示例:

h05 <- function(x = ls()) {
a <- 1
x
}
# ls() evaluated inside h05:
h05()
#> [1] "a" "x"
# ls() evaluated in global environment:
h05(ls())
#> [1] "h05"
我想知道我在这里遗漏了什么,以及前面提到的规则是否只在我们根据函数调用中的其他参数定义和参数时才成立


非常感谢您的解释。

在评论中讨论之后,以下是答案:

台词

y <- 6
x <- 5
它在全局环境中计算表达式
4
12
,以查找局部变量的值。全局变量
x
y
在此过程中不起作用

如果你打这样的电话

f1(x = 4, y = y <- x)

f1(x=4,y=y)这与函数中的
x
y
是与全局环境中的
x
y
不同的变量的答案相同
,这本书讨论的值是4和12。
x
y
是函数参数名。如果您使用了像
f1(x=(x是的,完全正确。是的,有点。更准确地说,它是在函数头中定义的变量。它是在函数体中可见的变量。再次非常感谢您抽出时间回答我的问题。我真的很感激,我很高兴终于发现了这里的细微差别。
f1 <- function(x, y) {
  x*2 + y
}
f1(x = 4, y = 12)
f1(x = 4, y = y <- x)