代码之家  ›  专栏  ›  技术社区  ›  Simon Harmel

如何循环“…”在R函数中

  •  2
  • Simon Harmel  · 技术社区  · 1 年前

    我有一个名为 foo() .论据如下 ...

    但我想在 。。。 。例如,如果用户输入 col = c(2,3) ,我想要第一轮 lapply() 使用 col = 2 第二轮 lapply() 使用 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))
    
    1 回复  |  直到 1 年前
        1
  •  2
  •   Ben Bolker    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)
    
    推荐文章