R 具有列表对象的dotMethods。。。合并论点

R 具有列表对象的dotMethods。。。合并论点,r,list,R,List,我正在学习和参考一本书。书中的代码定义了一个新函数,然后它有一行——“args,这是正确的,…继承了这些参数的名称和顺序(如果可用) >f(1,2,苹果=3,香蕉=4) [[1]] [1] 1 [[2]] [1] 2 $apple [1] 3 美元香蕉 [1] 4 编写这些玩具函数并在学习时以这种方式检查输出是很有用的。这是正确的,…继承了这些参数的名称和顺序(如果可用) >f(1,2,苹果=3,香蕉=4) [[1]] [1] 1 [[2]] [1] 2 $apple [1] 3 美元香蕉 [

我正在学习和参考一本书。书中的代码定义了一个新函数,然后它有一行——“args,这是正确的,
继承了这些参数的名称和顺序(如果可用)

>f(1,2,苹果=3,香蕉=4)
[[1]]
[1] 1
[[2]]
[1] 2
$apple
[1] 3
美元香蕉
[1] 4

编写这些玩具函数并在学习时以这种方式检查输出是很有用的。

这是正确的,
继承了这些参数的名称和顺序(如果可用)

>f(1,2,苹果=3,香蕉=4)
[[1]]
[1] 1
[[2]]
[1] 2
$apple
[1] 3
美元香蕉
[1] 4

编写这些玩具函数并在学习时以这种方式检查输出也很有用。

嗯,不是真的。它只将函数调用中不匹配的参数转换为“args”列表

funtest <- function(a, b, ..., d="junk") { dots<-list(...); print(dots) }
> funtest( 1,2,3,4,5)
[[1]]
[1] 3

[[2]]
[1] 4

[[3]]
[1] 5
还有一点建议。使用变量名“args”可能不是一个好主意,因为还有一个名为
args
的函数。从长远来看,您可能会混淆您自己或您的读者:

> args(funtest)
function (a, b, ..., d = "junk") 
NULL

不完全是。它只将函数调用中不匹配的参数转换为“args”列表

funtest <- function(a, b, ..., d="junk") { dots<-list(...); print(dots) }
> funtest( 1,2,3,4,5)
[[1]]
[1] 3

[[2]]
[1] 4

[[3]]
[1] 5
还有一点建议。使用变量名“args”可能不是一个好主意,因为还有一个名为
args
的函数。从长远来看,您可能会混淆您自己或您的读者:

> args(funtest)
function (a, b, ..., d = "junk") 
NULL

感谢你们两位。下一行代码是-splom(~datamatrix[,1:3],lower.panel=function(…){},upper.panel=upperp)第二个和第三个参数的用途是什么?它们看起来非常混乱…lower.panel=function(…){}意思是我们正在创建一个新函数,但没有为它定义任何内容?upper.panel=upperp是否意味着我们正在调用upperp函数,但没有向该函数传递任何参数?感谢你们的回复…感谢你们两位。下一行代码是-splom(~datamatrix[,1:3],lower.panel=function(…){},upper.panel=upperp)第二个和第三个参数的目的是什么?它们看起来很混乱…lower.panel=function(…){}表示我们正在创建一个新函数,但没有为其定义任何内容?upper.panel=upperp是否表示我们正在调用upperp函数,但没有向该函数传递任何参数?感谢您的回答…谢谢。下一行代码是-splom(~datamatrix[,1:3],lower.panel=function(…){},upper.panel=upperp)第二个和第三个参数的用途是什么?它们看起来非常混乱…lower.panel=function(…){}是否意味着我们正在创建一个新函数,而没有为它定义任何内容?upper.panel=upperp是否意味着我们正在调用upperp函数,但没有向该函数传递任何参数?感谢您的帮助
lower.panel=function(…){
的意思是你所说的,但至于其他的,你有这本书,我没有。这些函数很可能是在本文前面定义的。只需使用函数名就可以调用函数,因此
upper p
将从
upper.panel
的默认值中获取函数。请阅读?splom页面。谢谢下一行代码说-splom(~datamatrix[,1:3],lower.panel=function(…){},upper.panel=upperp)第二个和第三个参数的用途是什么?它们看起来非常混乱…lower.panel=function(…){}表示我们正在创建一个新函数,但没有为它定义任何内容?upper.panel=upperp是否表示我们正在调用upperp函数,但没有向该函数传递任何参数?感谢您的帮助
lower.panel=function(…){
的意思是你所说的,但其余的,你有这本书,我没有。这些函数很可能是在本文前面定义的。只需使用函数名就可以调用函数,因此
upper p
将从
upper.panel
的默认值中获取函数。请阅读?splom页面。