如何在 R 函数中循环 '. . .'

How to loop over `. . .` in an R function

提问人:Simon Harmel 提问时间:10/9/2023 最后编辑:jpsmithSimon Harmel 更新时间:10/9/2023 访问量:38

问:

我有一个名为 .参数是 .foo()...

但是我想遍历 中的各个参数。例如,如果用户输入,我希望第一轮使用,第二轮使用,依此类推。...col = c(2,3)lapply()col = 2lapply()col = 3

这在 R 中可能吗?

可重现的 R 代码:

foo <- function(...){
  
  x <- list(...)
  n_plots <- lengths(x)[1]
    
  par(mfrow = n2mfrow(n_plots))
  
  lapply(1:n_plots, \(i) plot(1:10, ...))
  
}
# EXAMPLE OF USE:
foo(col = 2:3, pch = c(19,21))
r 函数 lapply

评论


答:

2赞 Ben Bolker 10/9/2023 #1

这有点复杂(使用两次),但对于任意数量的参数,似乎可以解决问题:...

foo <- function(...){
  L <- list(...)
  n_plots <- lengths(L)[1]  
  par(mfrow = n2mfrow(n_plots))
  ff <- function(...) {
     args <- c(list(x = 1:10), list(...))
     do.call(plot, args)
  }
  Map(ff, ...)
}
foo(col = 2:3, pch = c(19,21), cex = 2:3)