R 将椭圆(…)中的参数发送到不同的目标
有时我需要允许用户通过。。。在某些情况下,这些可选参数用于R 将椭圆(…)中的参数发送到不同的目标,r,R,有时我需要允许用户通过。。。在某些情况下,这些可选参数用于plot(),有时用于在我的函数中调用的其他函数。我编写了以下函数,该函数将参数分为与plot()匹配的参数和与之不匹配的参数: dotsForPlots <- function(..., plot = TRUE) { dots <- list(...) dotnames <- names(dots) dfp <- names(par()) # dfp = dots for plots
plot()
,有时用于在我的函数中调用的其他函数。我编写了以下函数,该函数将参数分为与plot()
匹配的参数和与之不匹配的参数:
dotsForPlots <- function(..., plot = TRUE) {
dots <- list(...)
dotnames <- names(dots)
dfp <- names(par()) # dfp = dots for plots
# add select args for plot.default
dfp <- c(dfp, "main", "xlim", "ylim", "xlab", "ylab", "type")
if (plot) pass <- which(dotnames %in% dfp)
if (!plot) pass <- which(!dotnames %in% dfp)
return(dots[pass])
}
产生所需的输出
现在问题是:
do.call方法更简单的选项?我在想一种方法,可以用某种方式强制dfp
,我可以用plot(x,y,“修改的dfp”)
你可能会从这里得到一些想法@RichardScriven谢谢,我会研究这个答案,我错过了。
tst <- dotsForPlots(cex = 2, noise = 5, junk = "hello",
lty = 3, plot = TRUE, main = "Test Plot")
str(tst)
foo <- function(x, y, ...) {
dnp <- dotsForPlots(..., plot = FALSE) # to go to jitter
dnp$x <- y # has to match eventual function call
y <- do.call(jitter, args = dnp)
dfp <- dotsForPlots(...) # to go to plot
dfp$x <- x
dfp$y <- y
do.call(plot, dfp)
}
foo(x = 1:10, y = 1:10, cex = 2, lty = 2, factor = 10,
main = "Hello", ylab = "", type = "b")