Sto sperimentando con Shiny e lo adoro. Ho creato una piccola applicazione in cui gli studenti caricano un file CSV e quindi scelgono variabili dipendenti e variabili indipendenti e quindi R calcola una regressione lineare. Funziona bene. Ce l'ho caricato su:Lucido: Mostra i pulsanti solo dopo che il file è stato caricato
http://carlosq.shinyapps.io/Regresion
[È possibile utilizzare this file di provarlo, se si desidera. "Birra" è la variabile dipendente e il resto delle variabili tranne "id" sono la indipendenti]
Ecco 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))
})
})
})
Ed ecco l'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')
)
)
))
La mia domanda è: Voglio rendere l'aspetto del pulsante "Premere dopo aver letto il file e selezionare le variabili" subordinatamente al caricamento riuscito.
ho cercato di usare il suggerimento qui contenute:
Make conditionalPanel depend on files uploaded with fileInput
Ma non riesco proprio a farlo funzionare.
Appagisco qualsiasi aiuto.
Grazie Marat. Ho provato la tua soluzione. Fa sparire il bottone ... e va bene. Ma non appare dopo aver caricato il file. Ho dimenticato il file server.R include una riga che controlla se il file è stato caricato correttamente. – user23438
@ user23438, non sono riuscito a ottenere la soluzione usando 'conditionPanel', perché non sapevo come impostare correttamente' condition'. Ho modificato la risposta, che ora si basa su uiOutput. –
Grazie ancora Marat per il tuo tempo. La tua nuova soluzione mi avvicina alla soluzione. Ora il pulsante appare al momento giusto, ma crea un problema con i miei contenuti $ di output. Prima ho avuto il codice in questa sezione avvolto in "isolate ({})" che è stato attivato da input $ azione. Ora l'azione $ input è scomparsa perché il pulsante è scomparso. Potrei sbarazzarmi di isolare ma poi stampa spazzatura finché non vengono selezionate le variabili giuste. – user23438