Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.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_Arguments - Fatal编程技术网

R如何在这里传递参数?

R如何在这里传递参数?,r,function,arguments,R,Function,Arguments,我不是一个很好的面向对象的人,所以请有人用外行的术语解释一下这个简单的概念 当我从foo.parent函数调用foo.child时,它似乎传递了A=7参数 向下进入foo.child对象,并像我预期的那样重写foo.child中的A=3默认参数或优先于该参数 foo.parent <- function(A=7) foo.child(A) foo.child <- function(A=3) 2+A foo.parent(A=7) #[1] 9 foo.parent在第二个示例中,

我不是一个很好的面向对象的人,所以请有人用外行的术语解释一下这个简单的概念

当我从foo.parent函数调用foo.child时,它似乎传递了A=7参数 向下进入foo.child对象,并像我预期的那样重写foo.child中的A=3默认参数或优先于该参数

foo.parent <- function(A=7) foo.child(A)
foo.child <- function(A=3) 2+A
foo.parent(A=7)
#[1] 9

foo.parent在第二个示例中,您没有给
a
赋值(至少没有以您可能认为的方式)。试一试


foo.child在您的第二个示例中,您没有给
a
赋值(至少没有以您可能认为的方式)。试一试


foo.child我认为您的问题在于您不太了解默认参数是如何工作的。所以

foo.child = function(A=1) 2+A
定义具有默认参数a=1的函数
foo.child
。所以

foo.child()
给3。现在在这个函数中

foo.parent = function(A=3){
   foo.child(A=4)
}
您总是将值
A=4
传递给函数
foo.child
,因此

foo.parent(A=7)
# 6

另外,当您试图弄清楚发生了什么时,使用不同的
A

值是很有帮助的。我认为您的问题在于您不太了解默认参数是如何工作的。所以

foo.child = function(A=1) 2+A
定义具有默认参数a=1的函数
foo.child
。所以

foo.child()
给3。现在在这个函数中

foo.parent = function(A=3){
   foo.child(A=4)
}
您总是将值
A=4
传递给函数
foo.child
,因此

foo.parent(A=7)
# 6

另外,当您试图弄清楚发生了什么时,使用不同的
A

foo.parent
foo.parentI是很有帮助的。我正在阅读其他人的代码,他们似乎总是在子函数中强制使用默认参数(即foo.child(A=3))。当我实例化该对象时,我希望它自动覆盖子块中的值。如果说在实例化时必须将参数保留为空或未定义(即A=A),是否正确?我的意思是,您只有两个独立的函数
foo.child
foo.parent
除了相同的参数变量名外,不共享任何内容,但它们也可以以不同的方式命名。这可能会引起混淆。我正在阅读其他人的代码,他们似乎总是在子函数中强制使用默认参数(即foo.child(a=3))。当我实例化该对象时,我希望它自动覆盖子块中的值。如果说在实例化时必须将参数保留为空或未定义(即A=A),是否正确?我的意思是,您只有两个独立的函数
foo.child
foo.parent
除了相同的参数变量名外,不共享任何内容,但它们也可以以不同的方式命名。这可能会造成混乱。因此,如果我有一个设置了默认参数的库。。。例如,我从某人的库中借用foo.child(A=4)并实例化该对象,每次实例化它时,我必须将该默认值中的变量从A=4更改为A=A。对吗?我想你把概念弄混了,在这个过程中有点困惑。首先,将foo.child看作一个函数。它接收一些数据并返回一些内容。如果不传递任何内容,那么它将使用它的默认值(但书:我知道函数是第一类对象)。谢谢如果可以的话,我会两个都投票。所以如果我有一个设置了默认参数的库。。。例如,我从某人的库中借用foo.child(A=4)并实例化该对象,每次实例化它时,我必须将该默认值中的变量从A=4更改为A=A。对吗?我想你把概念弄混了,在这个过程中有点困惑。首先,将foo.child看作一个函数。它接收一些数据并返回一些内容。如果不传递任何内容,那么它将使用它的默认值(但书:我知道函数是第一类对象)。谢谢如果可以的话,我会投这两个票。