al momento de modificar los nulos de un data frame con mutate, al colocar el nombre de la columna con la variable que se seleccione esta no la reconoce; sino crea una columna con el nombre de la variable y coloca el contenido de esa columna seleccionada
##ui-------------
library(shiny)
library(shinydashboard)
library(DT)
library(ggplot2)
library(tidyverse)
library(psych)
ui <- dashboardPage(
dashboardHeader(
),#header
dashboardSidebar(width = 250, disable = F,
fluidPage(
sidebarMenu(
menuItem("Carga",tabName = "carga"),
menuItem( "Modificar nulos",tabName = "mod")
)
)
), #sidebar
dashboardBody(
fluidPage(
tabItems(
tabItem(tabName = "carga",
navbarPage("Menú de carga",
tabPanel("Ingreso",
h3("Carga de Datos"),
tags$hr(),
fluidRow(
column(5,
selectInput("separador",
h4("Separador"),
choices = list(" , " = ",",
" ; " = ";",
"Seleccione una opción"= 3
),
selected = 3
),
# tags$hr(),
checkboxInput("header", "Encabezado", TRUE)
),
column(5,
fileInput("fichero",
h4("Archivo"),
buttonLabel = "Fichero",
placeholder = "selecciona un fichero",
accept = c(
"text/csv",
"text/comma-separated-values,text/plain",
".csv"
),
multiple = F)
)
)
), #tabpanel ingreso
tabPanel("Tabla",
box( height = "500",width = "15",solidHeader = T,
DT::dataTableOutput("tablaCargar"),style = "height:500px; overflow-y: scroll;overflow-x: scroll;"
)
)#tabpanel tabla
)#navbar
),#carga
###---------------------------------------------------------------------------------------------------------
#####-----------------------------------------------------------------------------------------------------------
tabItem(tabName = "mod",
h3("Modificar elementos nulos"),
sidebarLayout(
sidebarPanel(
uiOutput("uimod"),
hr(),
selectInput("resumen",
h4("Elegir termino"),
choices = list("Seleccione una opción"= 3,
" Minimo" = "min",
" Mediana " = "median",
" Media" = "mean",
" Maximo " = "max"
),
selected = 3
)
),
mainPanel(
tabsetPanel(
id = 'datasetmod',
tabPanel("Modificar",
br(),
box( height = "500",width = "15",solidHeader = T,
dataTableOutput("tablaMod"),style = "height:500px; overflow-y: scroll;overflow-x: scroll;"
)
)
)
)
)
),
######----------------------------------------------------------------------------------------------------------
tabItem(tabName = "gra",
tabPanel("grafica",
h4("Grafica"),
sidebarLayout(
sidebarPanel(
uiOutput("uigra")
),
mainPanel(
tabsetPanel(
id = 'datasetGra',
tabPanel("Grafica",
plotOutput("plot1")
)
)
)
)
)
)#grafica
#######------------------------------------------------------------------------
)#items
)#fluidpage
)#body
)
##SERVIDOR-------
server <- function(input, output, session) {
####-------------render de fileInput archivo
archivo1 <- reactive({
file <- input$fichero
if (is.null(file)|| input$separador == 3)
return(NULL)
archivo <- read.csv(file$datapath,
sep = input$separador,
header = input$header,
na = c("", "NA"),
)
})
####---------render de tabla cargar
output$tablaCargar <- renderDataTable({
archivo1()
})
####------------ render seleccion col a modificar
output$uimod <- renderUI({
# conditionalPanel(
# condition = 'input.datasetmod === "Modificar"',
selectInput("variablesMod", "Selección de columna",
names(archivo1()), multiple = F)
#)
})
archivo2 <- reactive({
columna <- input$variablesMod
cambio <- input$resumen
if (is.null(columna)) {
return(NULL)
}
###
### problema no selecciona la variable columna, crea otra tabla con el nombre columna
a <-archivo1() %>% mutate(columna = replace_na(archivo1()[,columna],cambio))
})
output$tablaMod <- renderDataTable({
archivo2()
})
}
shinyApp(ui, server)