在其他功能中从输入面板调用选项?

时间:2017-08-03 13:37:43

标签: r shiny leaflet

我有一个简单的闪亮应用程序:

阅读zip文件。选择一些所需文件并根据读取文件的数量调整输入面板:

CIL

最后,在我的CTS函数中,如何设置参数ui <- fluidPage( fileInput("File", "Input checkbox"), selectInput("inSelect", "Select input",c()) leafletOutput("mymap") ) server <- function(input, output, session) { cor<- reactive({ x=input$File if (is.null(x)) return(NULL) report_list <- c("Park result.txt", "Park result minus", "Park result plus") temp_files <- unzip(x$datapath) temp_files <- temp_files[grepl(paste(report_list, collapse = "|"), temp_files)] T=length(temp_files) A_new=c();for(i in 1:(T/3)){A_new[[i]]=c()} for(i in 1:(T/3)){A_new[[i]]=....} result <- list(T=T,A_new=A_new); return(result); }) observeEvent(cor(),{ updateSelectInput(session, "Select1", label = paste(((cor()$T)/3),"different layout"), choices = paste0("Layout",c(1:((cor()$T)/3)))) }) output$mymap <- renderLeaflet({ infile=input$File if (is.null(infile)) return(NULL) a2=cor() leaflet() %>% addProviderTiles("OpenTopoMap", group = "MapQuestOpen.Aerial") %>% addMarkers(data =a2$A_new[[1]],~long, ~lat, popup = ~as.character(mag), label = ~as.character(Name))%>% addMeasure() }) } shinyApp(ui, server) ,如果用户选择output$mymap,则绘图显示与{{{}相关的地图1}},如果A_new,则地图应为layout1以显示?!

2 个答案:

答案 0 :(得分:2)

您还可以使用代码少的observeEvent

 observeEvent(cor(),{
    updateSelectInput(session, "inSelect",label = paste(cor()$t1,"different layout"),choices = paste0("Layout",c(1:cor()$t1)))
  })

答案 1 :(得分:1)

您的被动内容中定义的任何内容都无法从被动方面外部访问。所以在反应中,你做

x=input$File

所以x是在被动反应中定义的,但不是在被动反应之外!所以在你的观察者中:

observe({ 
if (is.null(x))
  return(NULL)
...

不起作用,因为x不存在。我猜你想做的是:

observe({ 
if (is.null(cor()))
  return(NULL)
...

检查被动是否为NULL。希望这有帮助!