闪亮的应用程序创建 - 将结果传递给表;从Shiny中读取对象不允许

时间:2016-09-19 15:56:14

标签: r shiny

我对闪亮的应用程序相对较新,并尝试创建一些基本决策规则,这些规则将根据定义的规则输出分类方案。我的平台和R版本是:

平台:x86_64_w64_mingw32 R版本:3.2.1(2015_06_18)

我收到错误:$ .shinyoutput中的错误:在尝试测试#Profile 1的输出时,不允许从shinyoutput对象读取对象,其中Fall LNF得分是< 20.5(即输入$ fluency2< 20.5使用renderPrint作为对象" a")。对于多个if语句,我有打印命令打印到R控制台,但无法弄清楚如何将信息发布到主面板"分组"在ui对象中定义。下面是我的ui,server和ShinyApp命令的脚本。非常感谢任何帮助。

ui<-(fluidPage(titlePanel("testapp"),
           sliderInput(inputId="fluency1", label="Fall FSF",value=25,min=0,max=200),
           sliderInput(inputId="fluency2", label="Fall LNF",value=25,min=0,max=200),
           mainPanel(h5("Groupings"),
                     textOutput("stuff"))))


server<-function(input,output) {observe({
#PROFILE 1
if ( (input$fluency2<20.5)) {
  #print("Profile 1")
  a<-renderPrint(output$stuff({"Profile 1"}))
  a()
} 
if( (input$fluency1<12) & ((input$fluency2>20)) & (input$fluency2<23)) {
  print("Profile 1")
} 
if( (input$fluency1<9) & ((input$fluency2>21)) & (input$fluency2<25)) {
  print("Profile 1")
} 

#PROFILE 2
if ( (input$fluency1>11)) {
  print("Profile 2")
} 
if( ((input$fluency1>8) & (input$fluency1<28)) & ((input$fluency2>22) & (input$fluency2<25))) {
  print("Profile 2")
} 
if( (input$fluency1<28) & ((input$fluency2>24))) {
  print("Profile 2")
} 

#PROFILE 3
if( (input$fluency1>27) & ((input$fluency2>23))) {
  print("Profile 3")
}})}


shinyApp(server=server,ui=ui)

1 个答案:

答案 0 :(得分:1)

这有帮助吗?

ui<-(fluidPage(titlePanel("testapp"),
                   sliderInput(inputId="fluency1", label="Fall FSF",value=25,min=0,max=200),
                   sliderInput(inputId="fluency2", label="Fall LNF",value=25,min=0,max=200),
                   mainPanel(h5("Groupings"),
                             textOutput("stuff"))))


    server<-function(input,output) {

            profile <- reactive({
                    if ( (input$fluency2<20.5)) {
                            tmp <- "Profile 1"
                    } 
                    if( (input$fluency1<12) & ((input$fluency2>20)) & (input$fluency2<23)) {
                            tmp <- "Profile 1"
                    } 
                    if( (input$fluency1<9) & ((input$fluency2>21)) & (input$fluency2<25)) {
                            tmp <- "Profile 1"
                    } 

                    #PROFILE 2
                    if ( (input$fluency1>11)) {
                            tmp <- "Profile 2"
                    } 
                    if( ((input$fluency1>8) & (input$fluency1<28)) & ((input$fluency2>22) & (input$fluency2<25))) {
                            tmp <- "Profile 2"
                    } 
                    if( (input$fluency1<28) & ((input$fluency2>24))) {
                            tmp <- "Profile 2"
                    } 

                    #PROFILE 3
                    if( (input$fluency1>27) & ((input$fluency2>23))) {
                            tmp <- "Profile 3"
                    }
                    tmp

            })
            output$stuff <- renderText({
                    profile()
            })
    }


    shinyApp(server=server,ui=ui)