Ich experimentiere mit Shiny und ich liebe es. Ich habe eine kleine Anwendung erstellt, wo Schüler eine CSV-Datei hochladen und dann eine abhängige Variablen und unabhängige Variablen auswählen und dann berechnet R eine lineare Regression. Es funktioniert gut. Ich habe es hochgeladen an:Shiny: Schaltflächen nur anzeigen, nachdem die Datei hochgeladen wurde
http://carlosq.shinyapps.io/Regresion
[Sie this file verwenden können, um es zu testen, wenn Sie wollen. "Bier" ist die abhängige Variable und der Rest der Variablen mit Ausnahme von "id" sind die unabhängige]
hier 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))
})
})
})
Und hier ist der 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')
)
)
))
Meine Frage ist: Ich möchte die Schaltfläche "Drücken Sie nach dem Lesen der Datei und die Auswahl der Variablen" Bedingung für ein erfolgreiches Hochladen machen.
Ich habe versucht, den Vorschlag hier enthalten sind, zu verwenden:
Make conditionalPanel depend on files uploaded with fileInput
Aber ich kann es einfach nicht funktioniert.
Ich appreaciate jede Hilfe.
Danke Marat. Ich habe deine Lösung versucht. Es lässt den Knopf verschwinden ... und das ist gut. Aber es erscheint nicht nach dem Hochladen der Datei. I asumme Ihre Server.R-Datei enthält eine Zeile, die überprüft, ob die Datei erfolgreich hochgeladen wurde. – user23438
@ user23438, konnte ich die Lösung mit dem 'conditionPanel' nicht bekommen, weil ich nicht wusste, wie man' condition' richtig einrichtet. Ich habe die Antwort bearbeitet, die nun auf dem uiOutput basiert. –
Nochmals vielen Dank Marat für Ihre Zeit. Ihre neue Lösung bringt mich näher an die Lösung heran. Jetzt erscheint die Schaltfläche im richtigen Moment, aber es erzeugt ein Problem mit meiner Ausgabe $ contents. Zuvor hatte ich den Code in diesem Abschnitt in "isolate ({})" eingepackt, das durch die Eingabe $ action aktiviert wurde. Jetzt ist die Eingabe $ action weg, weil die Schaltfläche weg ist. Ich könnte Isolat loswerden, aber dann druckt es Müll, bis die richtigen Variablen ausgewählt sind. – user23438