Estoy escribiendo una función que genera un mapa de calor utilizando algunos datos de entrada, pero realiza algunas transformaciones de antemano. Para generar el mapa de calor real, estoy usando ComplexHeatmap::Heatmap
, que ofrece una gran variedad de opciones para modificar el mapa de calor. Me gustaría darle al usuario la oportunidad de especificar directamente los argumentos a ComplexHeatmap::Heatmap
través de mis funciones.
En este momento estoy usando algo que se parece a esto:
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)
Esto funciona bien, pero digamos que si el usuario quiere cambiar el show_column_names
argumento de ComplexHeatmap::Heatmap
. Esto daría como resultado un error porque no lo definí explícitamente args$show_column_names
. Parece muy tedioso hacer esto manualmente para cada argumento que ComplexHeatmap::Heatmap
ofrece y me preguntaba si hay una forma más elegante de hacerlo. Idealmente, y lo que finalmente me gustaría es que ComplexHeatmap::Heatmap
usaría sus argumentos predeterminados, pero el usuario puede "sobrescribirlos" si los especifica en la test_fun
función.
Pensé que algo como esto podría funcionar, pero desafortunadamente no es así.
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)
¡Cualquier ayuda es muy apreciada!
Solución del problema
No estoy particularmente familiarizado con el paquete, pero solo desea:
test_fun <- function(mat,...){
ComplexHeatmap::Heatmap(mat,...)
}
Parece que sí, por ejemplo, podríamos deshacernos de los nombres de las columnas y los nombres de las filas llamando a test_fun así:
test_fun(mat, show_row_names=FALSE, show_column_names = FALSE)
Los puntos suspensivos o... nos permiten colocar un número arbitrario de 'argumentos reconocidos por la función ComplexHeatmap::Heatmap' en nuestra función test_fun.
No hay comentarios:
Publicar un comentario