Cómo agregar argumentos a un DT:datatable basándose en algunas condiciones if?
Estoy tratando de dar formato a una tabla en shiny usando DT::datatable. Todas mis tablas pueden tener el contenedor predeterminado, pero solo cuando paso el argumento de contenedor es cuando quiero que sea diseñado como se pasa. He intentado varias opciones de usar condiciones if, pero sin éxito. Cuando miré el código de datatable, dice que si la función del contenedor falta, toma un tipo predeterminado. También intenté forzar lo mismo pero aún me da un error.
Ayuda por favor. A continuación se muestra el código para lo mismo:
table_opt = function(x, edit_y, container_dat = NULL, form_type = "", col_list = NULL){
DT::renderDataTable({
####### Formato porcentual
if(form_type == "%")
{
datatable(x
,editable = edit_y
,if(is.null(container_dat)){container = expr()} else {container = container_dat}
,rownames = F
,options = list(
paging = F
,ordering = F
,searching = F
,deferRender = T
,class = "compact"
,headerCallback = JS(
"function(thead) {",
"$(thead).css('font-size','14px');",
"$(thead).css('background-color','#000000');",
"$(thead).css('color','#ffffff');",
"}"
,columnDefs = list(list(className = 'dt-center', targets = '_all'))
)) %>%
formatPercentage(col_list,digits = 2)
}
})
}
davy.ai
Parece que el problema está en la declaración de la condición de la instrucción if dentro de la función
renderDataTable
. La líneaif(is.null(container_dat)){container = expr()} else {container = container_dat}
no está manejando correctamente el argumento de contenedor.Aquí está el código corregido:
En este código, he separado los casos en que se suministra
container_dat
y cuando no se suministra. Esto debería ayudar a seleccionar el argumento de contenedor dinámicamente. Además, he agregado un caso para cuandoform_type
no es%
, para cubrir el comportamiento predeterminado.