Ale*_*lex 12 arguments r function
我写了一个制作情节的函数.我遇到的一个问题是需要生成可重现的图形.当然,一种解决方案是保存我生成的每个绘图的代码(即,保存我为函数参数设置的确切值).我想知道是否有一种方法可以捕获所有输入值,包括数据对象等,并将它们保存在列表中并将其作为输出返回.我想,一个简单的方法如下:
plot.foo <- function(x, main=NULL){
plot(x, main=main)
list(data=x, main=main)
}
Run Code Online (Sandbox Code Playgroud)
但是,我写的函数除了省略号参数(见下文)之外还有一堆参数,所以我想知道是否有更快的方法来保存所有的输入参数值.谢谢!
plot.foo <- function(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10,...){
...
}
Run Code Online (Sandbox Code Playgroud)
42-*_*42- 17
有各种各样的功能,可能是有用的:match.call,match.arg然后有提取的具体方法...的参数.
plot.foo <-
function(x, main=NULL){
cl <- match.call()
print(cl)
plot(x, main=main)
list(data=x, main=main)
}
plot.foo(1)
## plot.foo(x = 1)
## $data
## [1] 1
##
## $main
## NULL
plot.foo <-
function(x, main=NULL, ...){
extras=list(...)
print(extras)
cl <- match.call()
print(cl)
plot(x, main=main) # this would actually produce the grapjic
list(data=x, main=main, extras=extras) # this returns the arguments as a list
}
plot.foo(1, sthg="z")
## $sthg
## [1] "z"
# You could assign the returned list to a name or you could `save` to a file
plot.foo(x = 1, sthg = "z")
## $data
## [1] 1
##
## $main
## NULL
Run Code Online (Sandbox Code Playgroud)
还有一个sys.call函数,其结果可以作为文本返回deparse.
从一开始,创建所有绘图参数的命名列表
L <- list(x=data, main="string", ylim=c(0,10))
Run Code Online (Sandbox Code Playgroud)
然后使用该对象作为参数集进行绘图
do.call("plot", L)
Run Code Online (Sandbox Code Playgroud)
请务必保存L以备日后使用.
工作范例:
L<-list(x=1:10, y=(1:10)^2, main="Y by X",type="l",xlab="X",ylab="Y")
do.call("plot",L)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3568 次 |
| 最近记录: |