闪亮的输出没有运行

时间:2013-12-24 17:13:56

标签: r shiny

当我在UI中进行选择时,我遇到了运行闪亮输出的问题。我的服务器代码如下。

shinyServer(function(input, output, session) {      

    values <- reactiveValues();  
    values$clus_num <- NULL; 

    observe({    
      values$clus_num <- input$ss_clus_num_btn; 
      print(values$clus_num)
    })    

    output$ssid <- function(){
      cluster_num <- values$clus_num;
      if(identical(values$clus_num, 0)){
        print("no Cluster selected\n")
      }else{
        print("cluster selected\n")
      }
      print(cluster_num)
      ssids <- get_items_in_cluster(cluster_result, cluster_num)
      return(ssids)
    }
})

当我在UI中进行更改时,观察中的print语句正在执行,我可以看到值$ clus_num的值正确更改。所以我确信客户端能够将数据发送到服务器。但是输出$ ssid中的所有print语句都没有被执行。观察值的任何变化都应使输出$ ssid重新执行。为什么没有发生?

1 个答案:

答案 0 :(得分:0)

因此,如果没有可重复的示例,几乎不可能诊断出这一点(有关如何执行此操作的说明,请参阅this post)。然而,你的问题似乎有三个:

  1. 您正在定义一个函数,但没有调用它。
  2. 你必须在观察区内召唤它。
  3. 至少在您的示例中,未定义函数get_items_in_cluster(...)。
  4. 由于你没有提供一个例子,作为诊断我创建了这个简单的例子,每次按下命令按钮都会递增一个计数器。然而,它确实说明了上述几点,并且它会运行。

    <强> ui.R

    shinyUI(
      pageWithSidebar( 
        headerPanel("Shiny App"),
        sidebarPanel(
          actionButton("ss_clus_num_btn", "SSID:"),
          h3(textOutput("cluster"))
          ),
        mainPanel()
      )
    )
    

    <强> server.R

    shinyServer(function(input, output, session) {      
    
      values <- reactiveValues();  
      values$clus_num <- NULL; 
    
      observe({    
        values$clus_num <- input$ss_clus_num_btn; 
        print(paste(values$clus_num,"[from outside fn()]"),quote=FALSE)
        output$cluster <- renderText(fn())
      })    
    
      fn <- function(){
        cluster_num <- values$clus_num;
        if(identical(values$clus_num, 0)){
          print("no Cluster selected\n",quote=FALSE)
        }else{
          print("cluster selected\n",quote=FALSE)
        }
        print(paste(cluster_num,"[from inside fn()]"),quote=FALSE)
    #    get_items_in_cluster(...) NOT DEFINED
    #    ssids <- get_items_in_cluster(cluster_result, cluster_num)
        return(cluster_num)
      } 
    })
    

    它还在R命令行中生成以下输出:

    Listening on port 4053
    [1] 0 [from outside fn()]
    [1] no Cluster selected\n
    [1] 0 [from inside fn()]
    [1] 1 [from outside fn()]
    [1] cluster selected\n
    [1] 1 [from inside fn()]
    [1] cluster selected\n
    [1] 1 [from inside fn()]
    [1] 2 [from outside fn()]
    [1] cluster selected\n
    [1] 2 [from inside fn()]