代码之家  ›  专栏  ›  技术社区  ›  Japhir

如何在R包中重用相同的默认参数?如何将它们传递给嵌套函数?

  •  0
  • Japhir  · 技术社区  · 6 年前

    • 我想记录默认值的来源(引用)
    • 我只想定义一次值,这样就可以轻松地更新它们
    • 我想把这些值作为默认值传递给几个函数
    • 我想把这些值作为默认值传递给函数,这些函数有嵌套的函数,这些函数也需要参数。参数最好保持相同的名称。

    # example data to work with
    set.seed(123)
    dat <- data.frame(x = 1:10, input = rnorm())
    
    # first function, documented in roxygen2 style
    
    #' Apply correction
    #'
    #' @importFrom magrittr `%>%`
    #' @param dat Data to process.
    #' @param input the column quosure of dat to apply the correction to.
    #' @param factora Correction factor A to apply. Defaults to 0.3545, from \citet{Anon2018}.
    #' @param factorb Correction factor B to apply. Defaults to 8.988, from \citet{Bnon2018}.
    apply_correction <- function(dat, input = quo(input), factora = 0.3545, factorb = 8.988) {
      dat %>%
          mutate(processed = !!input * factora - factorb)
    }
    
    #' Multiple steps
    #'
    #' @inheritParams apply_correction
    #' @inheritParams function_that_uses_factorc
    multiple_steps <- function(dat, factorc = 3.421, factora = 0.3545, factorb = 8.988) {
            dat %>%
               mutate(step1 = input * factorc) %>%
               apply_correction(quo(step1), factora = factora, factorb = factorb)
    }
    

    我考虑过创建一个环境,在其中指定所有默认值,然后将它们作为默认值从环境中获取。但我不太确定这是一个很好的做法。请帮助:)。

    1 回复  |  直到 6 年前
        1
  •  0
  •   E. Brown    6 年前

    您可以创建一个不带参数的函数,并返回存储值的向量/列表。然后将该函数调用作为参数传递给需要这些值的函数。

    应用\u校正(dat,input,FACTURES=default \u FACTURES())