Shiny

2016-04-04 17 views
1

'de ikili operatöre sayısal olmayan bir bağımsız değişken var. Bazı yardıma ihtiyacım var Shiny dünyasında yeni başlayan bir kişiyim ve çok basit bir şeyle karşılaştım. İşte benim ui.R ve server.R kodu ı UygulamaÇalıştır() çalıştırdığınızdaShiny

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) 
    } 
) 

, burada ben alıyorum ne var: Tamam

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

cevap

1

! Reaktif fonksiyon ile render değiştirerek bu özel durumu çözdüm.

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

Ancak bu, renderText işlevinde neyin yanlış olduğunu açıklamıyor.

+1

"renderText" ile ilgili yanlış bir şey yok, ancak gördüğünüz gibi. Bir sayıymış gibi hesaplamaya çalışıyorsun. Ama öyle değil. Eğer sınıfı (renderText ({})) 'ı denerseniz, göreceksiniz ki, onun türü' 'işlev'' dir. –

+0

Evet, bunu açıklıyor. Çıktıyı $ bmi <- renderText ({input $ weight/input $ height * input $ height}) gibi kullanarak bunu benim için çözdü. Teşekkürler bir grup arkadaşı ... –