如何在r中的函数内将参数传递给函数

jon*_*jon 29 arguments r function

我正在编写涉及来自基本R的其他函数的函数以及许多参数.例如(实际功能更长):

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

data(mtcars)

myfunction (mtcars, Colv = NA)
Run Code Online (Sandbox Code Playgroud)

热图有许多参数可以传递给:

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"), ...)
Run Code Online (Sandbox Code Playgroud)

我想使用这些参数而不在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))
Run Code Online (Sandbox Code Playgroud)

我尝试了以下但不起作用:

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))
Run Code Online (Sandbox Code Playgroud)

jor*_*ran 36

尝试三个点而不是四个点,并将省略号参数添加到顶级函数:

myfunction <- function (dataframe, Colv = NA, ...) { 
    matrix <- as.matrix (dataframe) 
    out <- heatmap(matrix, Colv = Colv, ...)
    return(out)
}
Run Code Online (Sandbox Code Playgroud)

  • 只是为了添加一个选项(或增加混乱),您可以通过在主函数 `dotfuns&lt;-list(..., other_variable)` 中设置一个变量并将其传递给后续函数来扩充 `...` 的内容。这样做需要您自担风险:-) (3认同)
  • 这个答案非常有帮助,我想知道当你有两个具有不同参数名称的不同函数时是否有解决方案 (2认同)