当我在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重新执行。为什么没有发生?
答案 0 :(得分:0)
因此,如果没有可重复的示例,几乎不可能诊断出这一点(有关如何执行此操作的说明,请参阅this post)。然而,你的问题似乎有三个:
由于你没有提供一个例子,作为诊断我创建了这个简单的例子,每次按下命令按钮都会递增一个计数器。然而,它确实说明了上述几点,并且它会运行。
<强> 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()]