0

関数を使用して別の関数のデフォルト設定を変更しようとしていますformalsが、後で関数のデフォルトを確認しても何も変更されないという問題があります。私のコード(無関係なものを除く)は次のとおりです。

ScouringSettings <- function(min.MAF=NULL, eq.thresh=NULL){
  if (is.null(min.MAF) && is.null(eq.thresh)){
    maf <- paste0("Minimum MAF criterion is: ", formals(GeneScour)$min.maf)
    eq  <- paste0("Chi² HW equilibrium threshold: ", formals(GeneScour)$min.eq)
    cat(paste(maf, eq, sep="\n"))
  } else if (is.null(eq.thresh)) {
    formals(GeneScour) <- alist(gene=, min.maf = min.MAF, min.eq = formals(GeneScour)$min.eq)
  } else if (is.null()){
    formals(GeneScour) <- alist(gene=, min.maf = formals(GeneScour)$min.maf, min.eq = eq.thresh)
  } else {
    formals(GeneScour) <- alist(gene=, min.maf = min.maf, min.eq = eq.thresh)
  }
}

おそらくスコープの問題か何かが原因だと思ったので、最初の関数にいる間にデフォルトを出力しようとしたところ、次のように出力されました。

$gene

$min.maf
min.MAF

$min.eq
formals(GeneScour)$min.eq

強引にタイプしても

formals(GeneScour) <- alist(gene=, min.maf = 2, min.eq = formals(GeneScour)$min.eq)

変更は の外には引き継がれませんScouringSettings

どうすればそれを管理できますか?

4

0 に答える 0