【问题标题】:Non-numeric argument to binary operator in ShinyShiny中二元运算符的非数字参数
【发布时间】:2016-07-23 12:57:23
【问题描述】:

我需要一些帮助,我是 Shiny 世界的新手,并且陷入了一些可能非常基本的事情。这是我的 ui.R 和 server.R 代码

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

当我执行 runApp() 时,得到的结果如下:

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

【问题讨论】:

    标签: r arguments shiny


    【解决方案1】:

    好的!我通过用反应函数替换渲染解决了这个特殊情况。

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

    但这并不能解释 renderText 函数出了什么问题。

    【讨论】:

    • renderText 没有错,只是你看到它的方式。你试图用它来计算,就好像它是一个数字一样。但事实并非如此。如果你尝试class(renderText({})),你会看到,它的类型是function
    • 是的,这就解释了。像 output$bmi
    猜你喜欢
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    • 2020-09-15
    • 2018-01-20
    相关资源
    最近更新 更多