2016-09-01 1 views
0

Ich bin ziemlich neu zu R und noch neuer zu Shiny. Ich habe ein R-Skript, das ich jetzt in Shiny konvertieren möchte, aber ich scheitere immer.Shiny R - Erstellen eines neuen data.frame für ein Modell

Ich habe einen Datensatz mit den Variablen Wanddicke, T1, T2, T2star, ADC, Vivo, der in "Basisdaten.csv" gespeichert ist. Zusätzlich gibt es eine Variable DSS, die das Ergebnis definiert (entweder 0 oder 1). Ich möchte, dass diese Datei geladen wird und ein GLM-Modell mit diesem Datensatz trainiert werden soll, um "DSS" vorherzusagen. Dann möchte ich dem Benutzer eine Chance geben, eigene Parameter für Wanddicke, T1, T2, T2star, ADC, Vivo einzugeben, und ich möchte, dass die Vorhersage von Shiny zurückgegeben wird.

Das habe ich bis jetzt, aber aus Gründen, die ich nicht verstehe, wird es nicht laufen. Kann mir jemand sagen, wo meine Fehler sind? Ich vermute, dass das Problem bei der Erstellung des neuen data.frame "mydatanew" auftritt. Vielen Dank im Voraus.

UI.R

library(shiny) 
shinyUI(fluidPage(

    # Application title 
    titlePanel("Colitis Evaluator"), 

    # Sidebar 
    sidebarLayout(
    sidebarPanel(
     numericInput("Dicke", 
        "Wanddicke in mm:", 
        ""), 
     numericInput("T1", 
        "T1 in ms:", 
        ""), 
     numericInput("T2", 
        "T2 in ms:", 
        ""), 
     numericInput("T2star", 
        "T2* in ms:", 
        ""), 
     numericInput("ADC", 
        "ADC in 10^-6 mm^2/s", 
        ""), 
     numericInput("Vivo", 
        "In Vivo als 1", 
        ""), 

     # selectInput("Vivo", "In vivo/Ex vivo:", 
     #    choices = c("In vivo" = 1, "Ex vivo" = 0)) 

    submitButton("Submit") 

    ), 


    mainPanel(

     textOutput("Score") 


    ) 
) 
)) 

Server.R

library(shiny) 

Basisdaten <- read.table("Basisdaten.csv", header=TRUE, sep=";", na.strings="NA", dec=".", strip.white=TRUE) 
model.glm <- glm(formula=DSS==1 ~ Wanddicke + T1 + T2 + T2star + ADC + Vivo + (Wanddicke+T1+T2+T2star+ADC+Vivo)^3,family=binomial(),data=Basisdaten,na.action=na.omit) 



shinyServer(function(input, output) { 



    mydatanew <- data.frame(Wanddicke=input$Dicke,T1=input$T1,T2=input$T2,T2star=input$T2star,ADC=input$ADC,Vivo=input$Vivo) 
    mydatanew$Score <- predict(model.glm, newdata=mydatanew, type="response") 
    output$Score <- renderText(mydatanew$Score) 


}) 
+0

Für einen 'numericInput', der Standardwert sollte

csv:
Sie diese interessant finden Sei eine Zahl anstelle einer leeren Zeichenfolge. –

+0

In welcher Weise läuft es nicht? Erhalten Sie einen Fehler? –

Antwort

0

Der folgende Code sollte funktionieren.
Ich habe einige Stichproben wegen der sehr armen CSV-Datei hinzugefügt ...

Sie möglicherweise in Ihrer Konsole einige Beschwerden über den Betrieb nicht ohne einen aktiven reaktiven Kontext erlaubt gesehen haben. http://shiny.rstudio.com/articles/reactivity-overview.html

Wanddicke,T1,T2,T2star,ADC,Vivo,DSS 
10,2,3,4,5,6,0 
20,4,6,8,10,12,1 

server.R

library(shiny) 

Basisdaten <- read.table("Basisdaten.csv", header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE) 
model.glm <- glm(formula=DSS==1 ~ Wanddicke + T1 + T2 + T2star + ADC + Vivo + (Wanddicke+T1+T2+T2star+ADC+Vivo)^3,family=binomial(),data=Basisdaten,na.action=na.omit) 



shinyServer(function(input, output) { 

    output$Score <- renderText({ 

    mydatanew <- data.frame(Wanddicke=input$Dicke,T1=input$T1,T2=input$T2,T2star=input$T2star,ADC=input$ADC,Vivo=input$Vivo) 
    mydatanew$Score <- predict(model.glm, newdata=mydatanew, type="response") 
    mydatanew$Score + sample(1:100, 1) 
    }) 
}) 

ui.R

library(shiny) 
shinyUI(fluidPage(

    # Application title 
    titlePanel("Colitis Evaluator"), 

    # Sidebar 
    sidebarLayout(
    sidebarPanel(
     numericInput("Dicke", 
        "Wanddicke in mm:", 
        10), 
     numericInput("T1", 
        "T1 in ms:", 
        1), 
     numericInput("T2", 
        "T2 in ms:", 
        2), 
     numericInput("T2star", 
        "T2* in ms:", 
        3), 
     numericInput("ADC", 
        "ADC in 10^-6 mm^2/s", 
        4), 
     numericInput("Vivo", 
        "In Vivo als 1", 
        0), 

     # selectInput("Vivo", "In vivo/Ex vivo:", 
     #    choices = c("In vivo" = 1, "Ex vivo" = 0)) 

     submitButton("Submit") 

    ), 


    mainPanel(

     textOutput("Score") 


    ) 
) 
)) 
+0

Sehr geehrte Damen und Herren, vielen Dank für Ihre sofortige Antworten und freundliche Kommentare. Leider wird es auch mit tokiloutoks Modifikationen nicht funktionieren. Ich sehe nur die Benutzeroberfläche für weniger als eine Sekunde beim Klicken auf "Ausführen", aber bevor ich etwas tun kann, schließt es wieder. Keine Fehlermeldungen –

+0

ist Ihre CSV-Datei im selben Ordner wie Sie glänzenden Dateien? Können Sie Ihren Code in R (ouside shiny) ausführen? Siehst du irgendeinen Fehler in der Konsole? – tokiloutok

+0

Ich habe es bekommen ... es war wegen der Zeile Basisdaten <- read.table ("Basisdaten.csv", Header = TRUE, sep = ",", na.strings = "NA", dec = "." , strip.white = TRUE) Das Trennzeichen ist ";" nicht "," Vielen Dank für Ihre Hilfe und Bemühungen !! –

Verwandte Themen