2016-04-04 10 views
1

Ich brauche Hilfe Ich bin ein Neuling in Shiny Welt und stecken in etwas, das sehr einfach sein könnte. Hier ist mein ui.R und server.R CodeNicht-numerisches Argument zum binären Operator in Shiny

shinyUI(
    pageWithSidebar(
    headerPanel("Hello Shiny R..."), 
    sidebarPanel(
     sliderInput(inputId="age", label="Age", min=1, max=99, value=24, step=1, animate=TRUE), 
     numericInput(inputId="height", label="Height (cm)", min=0, max=300, value=160, step=5), 
     numericInput(inputId="weight", label="Weight (kg)", min=0, max=500, value=100, step=5), 
     radioButtons(inputId="gender", label="Gender", choices=c("Male", "Female"), selected="Male", inline=TRUE), 
     textInput(inputId="name", label="Full Name"), 
     submitButton(text="Apply") 
    ), 
    mainPanel(
     h1("BMI Calculator"), 
     p("Name:"), 
     textOutput("name"), 
     p("Age:"), 
     textOutput("age"), 
     p("Gender:"), 
     textOutput("gender"), 
     p("BMI:"), 
     textOutput("bmi") 
    ) 
) 
) 

shinyServer(
    function(input, output) { 
    output$name <- renderText({input$name}) 
    output$age <- renderText({input$age}) 
    output$gender <- renderText({input$gender}) 
    weight <- renderText({as.numeric(input$weight)}) 
    height <- renderText({as.numeric(input$height)}) 
    output$bmi <- weight/(height * height) 
    } 
) 

Wenn ich runapp() ausführen, hier ist was ich bekomme:

Error in height * height : non-numeric argument to binary operator 

Antwort

1

Ok! Ich löste diesen speziellen Fall, indem ich Render mit reaktiver Funktion ersetzte.

weight <- reactive({input$ 
height <- reactive({input$height/
output$bmi <- renderText({weight()/(height() * height())}) 

Aber das erklärt nicht, was mit der renderText-Funktion falsch ist.

+1

Es ist nichts falsch mit 'renderText', aber die Art, wie Sie es sehen. Sie versuchen damit zu rechnen, als wäre es eine Zahl. Aber es ist nicht. Wenn Sie 'class (renderText ({}))' versuchen, werden Sie sehen, dass sein Typ 'function' ist. –

+0

Ja, das erklärt es. Wenn Sie es wie Ausgabe $ bmi <- renderText ({Eingabe $ Gewicht/Eingabe $ Höhe * Eingabe $ Höhe}) verwenden, löste es für mich. Dank ein paar Kumpel ... –

Verwandte Themen