I am working in a Shiny app and I have a problem. Whenever it reads my Excel, processes my data using functions from a R file (utils. R, which works perfectly), and tries to show it in the Ver DataFrame tab, it shows every row, and instantly, they dissappear and I cannot explain why, or how to fix it.
observeEvent(input$btn_preprocesar_datos, {
req(vals$df_original)
cat("\n[DEBUG] ▶️ Iniciando preprocesado de datos...\n")
res = prepara_df_ordenado(df = vals$df_original, fecha_inicio = as.Date("2024-01-15"))
imputaciones_res = construir_imputaciones_B_dia_a_dia(
df_ordenado = res$df_ordenado,
min_prev = 3,
incluir_rechazadas = FALSE
)
vals$df_B = imputaciones_res$imputaciones_B
vals$df_original_preproc = res$df_ordenado
cols_a_texto = c("Mes", "Puesto", "Área", "Terna", "Operario")
for (col in cols_a_texto) {
if (col %in% names(vals$df_B)) vals$df_B[[col]] <- as.character(vals$df_B[[col]])
}
df_use = vals$df_B
meses = if ("Mes" %in% names(df_use)) sort(unique(na.omit(as.character(df_use$Mes)))) else character(0)
puestos = if ("Puesto" %in% names(df_use)) sort(unique(na.omit(as.character(df_use$Puesto)))) else character(0)
areas = if ("Área" %in% names(df_use)) sort(unique(na.omit(as.character(df_use$Área)))) else character(0)
updateSelectInput(session, "mes_df", choices = c("-", as.character(meses)), selected = "-")
updateSelectInput(session, "puesto_df", choices = c("-", as.character(puestos)), selected = "-")
updateSelectInput(session, "area_df", choices = c("-", as.character(areas)), selected = "-")
cat("[DEBUG] Filtros actualizados: mes_df =", input$mes_df, ", puesto_df =", input$puesto_df, "\n")
})
# --- Filtro del DataFrame mostrado en la pestaña "Ver DataFrame" ---
df_filtrado_df = reactive({
f <- if (input$df_choice == "df_B") vals$df_B else vals$df_original_preproc %||% vals$df_original
req(f)
valido <- function(x) !is.null(x) && nzchar(x) && x != "-"
if (valido(input$mes_df) && "Mes" %in% names(f)) f <- f[f$Mes == input$mes_df, ]
if (valido(input$puesto_df) && "Puesto" %in% names(f)) f <- f[f$Puesto == input$puesto_df, ]
if (valido(input$area_df) && "Área" %in% names(f)) f <- f[f$Área == input$area_df, ]
if (valido(input$terna_df) && "Terna" %in% names(f)) f <- f[f$Terna == input$terna_df, ]
if (valido(input$operario_df)&& "Operario" %in% names(f)) f <- f[f$Operario == input$operario_df, ]
cat("[DEBUG] Filtrado →", nrow(f), "filas después del filtrado (mes_df =", input$mes_df, ")\n")
f
})
output$tabla_df = renderDT({
req(df_filtrado_df())
f <- df_filtrado_df()
datatable(f, options = list(pageLength = 10, scrollX = TRUE))
})
