2017-08-03 24 views
1

我有一個簡單的閃亮應用程序:從其他功能的輸入面板中調用選項?

閱讀壓縮文件。選擇一些所需的文件和調整的基礎上讀取文件的編號輸入面板:

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功能,我怎麼可以將參數A_new,在某種程度上如果用戶選擇layout1,那麼陰謀顯示相關的地圖A_new[[1]],如果layout2那麼地圖應該是A_new[[2]]來顯示?!

回答

2

您也可以使用observeEvent這是少了很多碼

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

在你的反應中定義的任何內容都不能從反應的外部訪問。所以內反應,你做

x=input$File 

所以x被內你的反應定義,但你的反應不是外面!所以在你的觀察者:

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

將無法​​正常工作,因爲x不存在。我猜你想要做的是:

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

它檢查如果反應是NULL。希望這可以幫助!

+0

感謝的地步!我不再有錯誤,但它仍然不會對變化做出反應!我的意思是我的選擇輸入在運行帶反應功能的代碼後不會更新 –

+0

對我而言,它工作正常嗎? – Florian

+0

我發現這個問題,與我正在使用的側邊欄佈局有關,現在我再次混淆了這些訂單,但我還有另外一個問題,如果您再次通過我的更新問題,會很好。非常感謝你。 –

相關問題