2016-04-04 20 views
1

私はいくつかの助けが必要です。私はシャイニーの世界では初心者で、非常に基本的なものかもしれません。ここに私のui.Rとserver.Rコードは、私がrunApp()を実行すると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) 
    } 
) 

が、ここで私が取得しています何です:OK

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

答えて

1

!レンダリングをリアクティブ関数に置き換えることによって、この特定のケースを解決しました。

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

これは、renderText関数の何が問題なのかを説明していません。

+1

'renderText'には何も問題はありませんが、あなたはそれを見ています。あたかも数字であるかのように計算しようとしています。そうではありません。 'class(renderText({}))'を試してみると、型が 'function'であることがわかります。 –

+0

はい、それはそれを説明します。それを出力$ bmi < - renderText({input $ weight/input $ height * input $ height})のように使用すると、私のために解決されました。 おかげで仲間... –

関連する問題