如何将未知变量传递给R中的另一个函数
How to pass unknown variables to another function in R
我正在编写一个函数,它使用一些输入数据生成热图,但事先执行一些转换。为了生成实际的热图,我使用了 ComplexHeatmap::Heatmap
,它提供了多种选项来修改热图。我想让用户有机会通过我的函数直接指定 ComplexHeatmap::Heatmap
的参数。
现在我正在使用如下所示的东西:
library(ComplexHeatmap)
mat = matrix(rnorm(100), 10)
rownames(mat) = paste0("R", 1:10)
colnames(mat) = paste0("C", 1:10)
test_fun <- function(mat, ...){
args = list(...)
print(args)
p <- ComplexHeatmap::Heatmap(mat,
show_row_names = args$show_row_names)
return(p)
}
test_fun(mat, show_row_names=F)
这很好用,但假设用户想要更改 ComplexHeatmap::Heatmap
的 show_column_names
参数。这会导致错误,因为我没有明确定义 args$show_column_names
。对于 ComplexHeatmap::Heatmap
提供的每个参数手动执行此操作似乎非常乏味,我想知道是否有更优雅的方法来执行此操作。理想情况下,我最终想要的是,ComplexHeatmap::Heatmap
将使用其默认参数,但如果 he/she 在 test_fun
函数中指定它们,用户可以“覆盖”它们。
我认为这样的事情可能会奏效,但不幸的是它没有。
test_fun <- function(mat, ...){
args = list(...)
print(args)
p <- ComplexHeatmap::Heatmap(mat, ...)
return(p)
}
test_fun(mat, show_row_names=F, show_column_names=F)
非常感谢任何帮助!
我不是特别熟悉这个包,但是你只是想:
test_fun <- function(mat, ...){
ComplexHeatmap::Heatmap(mat,...)
}
您似乎这样做了,例如,我们可以通过调用 test_fun 来删除列名和 row_names:
test_fun(mat, show_row_names=FALSE, show_column_names = FALSE)
省略号或...允许我们在 test_fun 函数中放置任意数量的 'arguments recognised by the ComplexHeatmap::Heatmap function'。
我正在编写一个函数,它使用一些输入数据生成热图,但事先执行一些转换。为了生成实际的热图,我使用了 ComplexHeatmap::Heatmap
,它提供了多种选项来修改热图。我想让用户有机会通过我的函数直接指定 ComplexHeatmap::Heatmap
的参数。
现在我正在使用如下所示的东西:
library(ComplexHeatmap)
mat = matrix(rnorm(100), 10)
rownames(mat) = paste0("R", 1:10)
colnames(mat) = paste0("C", 1:10)
test_fun <- function(mat, ...){
args = list(...)
print(args)
p <- ComplexHeatmap::Heatmap(mat,
show_row_names = args$show_row_names)
return(p)
}
test_fun(mat, show_row_names=F)
这很好用,但假设用户想要更改 ComplexHeatmap::Heatmap
的 show_column_names
参数。这会导致错误,因为我没有明确定义 args$show_column_names
。对于 ComplexHeatmap::Heatmap
提供的每个参数手动执行此操作似乎非常乏味,我想知道是否有更优雅的方法来执行此操作。理想情况下,我最终想要的是,ComplexHeatmap::Heatmap
将使用其默认参数,但如果 he/she 在 test_fun
函数中指定它们,用户可以“覆盖”它们。
我认为这样的事情可能会奏效,但不幸的是它没有。
test_fun <- function(mat, ...){
args = list(...)
print(args)
p <- ComplexHeatmap::Heatmap(mat, ...)
return(p)
}
test_fun(mat, show_row_names=F, show_column_names=F)
非常感谢任何帮助!
我不是特别熟悉这个包,但是你只是想:
test_fun <- function(mat, ...){
ComplexHeatmap::Heatmap(mat,...)
}
您似乎这样做了,例如,我们可以通过调用 test_fun 来删除列名和 row_names:
test_fun(mat, show_row_names=FALSE, show_column_names = FALSE)
省略号或...允许我们在 test_fun 函数中放置任意数量的 'arguments recognised by the ComplexHeatmap::Heatmap function'。