una - no me aparecen los botones de cerrar minimizar y maximizar
Brillante: Mostrar botones solo después de que se haya cargado el archivo (2)
Estoy experimentando con Shiny y me encanta. Creé una pequeña aplicación donde los estudiantes cargan un archivo csv y luego eligen variables dependientes y variables independientes y luego R calcula una regresión lineal. Funciona bien. Lo he subido a:
http://carlosq.shinyapps.io/Regresion
[Puede usar este archivo para probarlo si lo desea. "cerveza" es la variable dependiente y el resto de las variables excepto "id" son las independientes]
Aquí está server.R:
# server.R
library(shiny)
shinyServer(function(input, output) {
filedata <- reactive({
infile <- input$file1
if (is.null(infile)){
return(NULL)
}
read.csv(infile$datapath)
})
output$dependent <- renderUI({
df <- filedata()
if (is.null(df)) return(NULL)
items=names(df)
names(items)=items
selectInput("dependent","Select ONE variable as dependent variable from:",items)
})
output$independents <- renderUI({
df <- filedata()
if (is.null(df)) return(NULL)
items=names(df)
names(items)=items
selectInput("independents","Select ONE or MANY independent variables from:",items,multiple=TRUE)
})
output$contents <- renderPrint({
input$action
isolate({
df <- filedata()
if (is.null(df)) return(NULL)
fmla <- as.formula(paste(input$dependent," ~ ",paste(input$independents,collapse="+")))
summary(lm(fmla,data=df))
})
})
})
Y aquí está el ui.R:
# ui.R
library(shiny)
shinyUI(fluidPage(
titlePanel("Multiple Linear Regression"),
sidebarLayout(
sidebarPanel(
fileInput(''file1'', ''Choose CSV File'',
accept=c(''text/csv'',
''text/comma-separated-values,text/plain'',
''.csv'')),
tags$hr(),
uiOutput("dependent"),
uiOutput("independents"),
tags$hr(),
actionButton("action", "Press after reading file and selecting variables")
),
mainPanel(
verbatimTextOutput(''contents'')
)
)
))
Mi pregunta es: quiero que el botón "Presionar después de leer el archivo y seleccionar variables" aparezca como condicional en una carga exitosa.
He tratado de usar la sugerencia aquí contenida:
Haga que conditionalPanel dependa de los archivos cargados con fileInput
Pero simplemente no puedo hacer que funcione.
Aprecio cualquier ayuda.
Aquí está ShinyApp y la versión final de ui.R y server.R basadas en todas las sugerencias proporcionadas por Marat.
Primero el ui.R
# ui.R
library(shiny)
shinyUI(fluidPage(
titlePanel("Multiple Linear Regression with R/Shiny"),
sidebarLayout(
sidebarPanel(
p("Please upload a CSV formatted file with your data."),
fileInput(''file1'', label=''Click button below to select the file in your computer.'',
accept=c(''text/csv'',
''text/comma-separated-values,text/plain'',
''.csv'')),
tags$hr(),
uiOutput("dependent"),
uiOutput("independents"),
tags$hr(),
uiOutput(''ui.action'') # instead of conditionalPanel
),
mainPanel(
p("Here''s the output from your regression:"),
verbatimTextOutput(''contents'')
)
)
))
y servidor.R
# server.R
library(shiny)
shinyServer(function(input, output) {
filedata <- reactive({
infile <- input$file1
if (is.null(infile)){
return(NULL)
}
read.csv(infile$datapath)
})
output$ui.action <- renderUI({
if (is.null(filedata())) return()
actionButton("action", "Run regression")
})
output$dependent <- renderUI({
df <- filedata()
if (is.null(df)) return(NULL)
items=names(df)
names(items)=items
selectInput("dependent","Now select ONE variable as dependent variable from:",items)
})
output$independents <- renderUI({
df <- filedata()
if (is.null(df)) return(NULL)
items=names(df)
names(items)=items
selectInput("independents","Also select ONE or MANY independent variables in the box below. You can change your selection several times:",items,multiple=TRUE)
})
output$contents <- renderPrint({
if (is.null(input$action)) return()
if (input$action==0) return()
isolate({
df <- filedata()
if (is.null(df)) return(NULL)
fmla <- as.formula(paste(input$dependent," ~ ",paste(input$independents,collapse="+")))
summary(lm(fmla,data=df))
})
})
})
Una vez más, gracias por su ayuda, Marat.
Este código funcionó para mí
ui.R
# ui.R
library(shiny)
shinyUI(fluidPage(
titlePanel("Multiple Linear Regression"),
sidebarLayout(
sidebarPanel(
fileInput(''file1'', ''Choose CSV File'',
accept=c(''text/csv'',
''text/comma-separated-values,text/plain'',
''.csv'')),
tags$hr(),
uiOutput("dependent"),
uiOutput("independents"),
tags$hr(),
uiOutput(''ui.action'') # instead of conditionalPanel
),
mainPanel(
verbatimTextOutput(''contents'')
)
)
))
servidor.R
# server.R
library(shiny)
shinyServer(function(input, output) {
filedata <- reactive({
infile <- input$file1
if (is.null(infile)){
return(NULL)
}
read.csv(infile$datapath)
})
output$dependent <- renderUI({
df <- filedata()
if (is.null(df)) return(NULL)
items=names(df)
names(items)=items
selectInput("dependent","Select ONE variable as dependent variable from:",items)
})
output$independents <- renderUI({
df <- filedata()
if (is.null(df)) return(NULL)
items=names(df)
names(items)=items
selectInput("independents","Select ONE or MANY independent variables from:",items,multiple=TRUE)
})
output$contents <- renderPrint({
input$action
isolate({
df <- filedata()
if (is.null(df)) return(NULL)
fmla <- as.formula(paste(input$dependent," ~ ",paste(input$independents,collapse="+")))
summary(lm(fmla,data=df))
})
})
output$ui.action <- renderUI({
if (is.null(input$file1)) return()
actionButton("action", "Press after reading file and selecting variables")
})
})