Shiny中的条件语句不显示值

时间:2016-08-24 22:25:20

标签: r shiny

我编写了一个闪亮的应用程序。它具有用户输入数据集和用户输入因变量。它预测因变量。 因变量存储在输入$ text

在UI.R中:

textOutput('contents2')

在server.R中我提到了一个条件语句,如果因变量是因子,它将预测类级别,否则连续值:

      output$contents2 <- renderText({
        if(class(input$text)=="factor"){
            predict(modelc(), newdata=testdata(),type="class")}

        if(class(input$text)=="numeric"){
                predict(model(), newdata=testdata())  

        }
   })

但它没有显示预测值。我想知道可能会遗漏什么。感谢

1 个答案:

答案 0 :(得分:1)

由于renderText没有返回任何值,因此无法打印任何内容,您可以通过将predict(...)包装到return函数中轻松修复它。

然而,还有另一个错误。由于input$text是一个字符串,因此其类为character,并且您的逻辑比较不符合您的要求。您可以先修改testdata()[[运算符进行对其进行修正,然后运算符为您提供向量,然后检查其类。

您还必须确保输入变量的名称确实是有效变量 - 与req函数(或validateneed)一样{/ p>

完整示例:

output$contents2 <- renderText({

  req(input$text %in% names(testdata() ))
  test <- class(testdata()[[input$text]])

  if (test == "factor") {
    return(predict(modelc(), newdata = testdata(), type = "class") )
  }
  if (test == "numeric") {
    return(predict(model(), newdata = testdata()) )
  }
})