2016-05-07 12 views
0

Ich möchte Optionsfelder (Eingabe $ relStat) verwenden, sodass für jede Option eine andere Berechnung für textOutput ausgeführt wird. Die Eingänge kommen von einem Schieberegler für basicIncome und numerisch für childNum.Verwenden von Optionsfeldern zum Ändern einer Berechnung

ui.R

sliderInput(inputId = "basicIncome", 
       label = "Choose a monthly basic income", 
       value = 600, min = 0, max = 1200, step = 50 
), 

textOutput("annualBasicIncome"), 
) 

server.R

annualBasicIncome <- eventReactive(input$updateButton, { 
    if ("1" %in% input$relStat) 
    renderText({(input$basicIncome*12)+((input$basicIncome*12)*input$childNum)}) 

    if ("2" %in% input$relStat) 
    renderText({(2*(input$basicIncome*12))+((input$basicIncome*12)*input$childNum)}) 
}) 

output$annualBasicIncome <- renderText({ 
    annualBasicIncome() 
}) 

Ich habe versucht, die Radiobutton in einen Wert zu geben. Aber binär.

Wenn ich die erste if("1") entferne dann wird für eine RadioButton Option nichts angezeigt und für die andere bekomme ich den Fehler argument 1 (type 'closure') cannot be handled by 'cat'.

Antwort

0

Versuchen:

switch(as.numeric(input$relStat), 
    return((input$basicIncome*12)+((input$basicIncome*12)*input$childNum)), 
    return((2*(input$basicIncome*12))+((input$basicIncome*12)*input$childNum)) 
) 

Das sollten Sie das gewünschte Ergebnis erhalten.

+0

Vielen Dank für Ihre Antwort! Ich stolpere trotzdem. Kannst du mir sagen, wohin dieser Brocken gehen soll? Ich habe versucht, relStat $ Input in ähnlicher Weise wie in Beispiel 2 [http://shiny.studio.com/articles/basics.html] zu speichern, aber ohne Erfolg. ' – gizzard

+0

@gizzard, versuchen Sie den Schalter anstelle Ihrer if-Anweisungen (wie bearbeitet). Sie können sehen, dass ich 'return' verwendet habe, weil' annualBasicIncome() 'dann den Wert erhält, den Sie anzeigen möchten. Dann sollte die Funktion, die Sie geschrieben haben, es ausdrucken, aber wenn es nicht funktioniert, versuchen Sie es mit 'verbatimTextOutput' statt' textOutput' und 'renderPrint' anstelle von' renderText'. Prost. – arodriguezca

+0

Die Bearbeitung hat es geschafft, vielen Dank! – gizzard

Verwandte Themen