36

多くの引数を持つベース R の他の関数を含む関数を作成しています。例 (実際の関数はもっと長いです):

myfunction <- function (dataframe, Colv = NA) { 
matrix <- as.matrix (dataframe) 
out <- heatmap(matrix, Colv = Colv)
return(out)
}

data(mtcars)

myfunction (mtcars, Colv = NA)

ヒートマップには、渡すことができる多くの引数があります。

heatmap(x, Rowv=NULL, Colv=if(symm)"Rowv" else NULL,
        distfun = dist, hclustfun = hclust,
        reorderfun = function(d,w) reorder(d,w),
        add.expr, symm = FALSE, revC = identical(Colv, "Rowv"),
        scale=c("row", "column", "none"), na.rm = TRUE,
        margins = c(5, 5), ColSideColors, RowSideColors,
        cexRow = 0.2 + 1/log10(nr), cexCol = 0.2 + 1/log10(nc),
        labRow = NULL, labCol = NULL, main = NULL,
        xlab = NULL, ylab = NULL,
        keep.dendro = FALSE, verbose = getOption("verbose"), ...)

これらの引数を myfunction 内にリストせずに使用したい。

myfunction (mtcars, Colv = NA, col = topo.colors(16))
Error in myfunction(mtcars, Colv = NA, col = topo.colors(16)) : 
  unused argument(s) (col = topo.colors(16))

私は次のことを試しましたが、うまくいきません:

myfunction <- function (dataframe, Colv = NA) { 
matrix <- as.matrix (dataframe) 
out <- heatmap(matrix, Colv = Colv, ....)
return(out)
}
data(mtcars)

myfunction (mtcars, Colv = NA, col = topo.colors(16))
4

2 に答える 2

40

4 つではなく 3 つのドットを試し、最上位関数に省略記号引数を追加します。

myfunction <- function (dataframe, Colv = NA, ...) { 
    matrix <- as.matrix (dataframe) 
    out <- heatmap(matrix, Colv = Colv, ...)
    return(out)
}
于 2012-06-17T15:37:17.377 に答える
0

これを試して:

  • globalenv のヒートマップの引数:
argsHeat = alist( <arguments for heatmap>)
  • 内部で heatmap() を呼び出す代わりにmyfunction、これを行います
out = do.call('heatmap', args = argsHeat)
于 2022-02-16T19:22:40.117 に答える