2017-08-03 9 views
0

いくつかの入力ファイルにはn列の座標が含まれています。入力ファイルの列数を選択する方法で、選択入力パネルをどのようにデザインできますか? たとえば、座標の5つのファイルを持つzipfileを読んだら、出力では、ファイル1またはファイル2の座標に関連するマップを表示するとか...これは、選択した入力パネルに5オプションを表示する必要があることを意味します。 100ファイルのzipファイルを読んだ場合、100個の選択肢をドロップダウンしたいと思っています! どうすればいいですか?私はthis exampleをチェックしましたが、それをどのように適応させるべきかわかりません!Shiny:選択入力の値を変更する

ここに私のコードの例があります。残念ながら、それは再現できないのですが、理解しやすいように複雑さを軽減:反応性機能で

ui <- fluidPage(

    fileInput("File","upload your file"), 

    selectInput("Select1", "Select input",c()) 
    mainPanel(tags$head(tags$style(type="text/css", ".tab-content {overflow: visible;}")), 
    leafletOutput("mymap")) 
) 

server <- function(input, output, session) { 
    coor <- reactive({infile=input$File 

        if (is.null(infile)) 
         return(NULL) 
        temp_files <- unzip(infile$datapath) 
        T=length(temp_files) 
        A_new=c();for(i in 1:T){A_new[[i]]=c()} 
        for(i in 1:T){ 
         . 
         . 
         . 
         A_new[[i]]= ... 
        } 
        result <- list(A_new=A_new,T=T); 
        return(result); 

       }) 

    observe({ 
    x <- input$File 
    if (is.null(x)) 
     x <- character(0) 
    map=coor() 
    updateSelectInput(session, "Select1", 
         label = paste("Select input label", map$T), 
         choices = map$A_new, 
         selected = tail(map$A_new, 1) 
    ) 
    }) 
} 
output$mymap <- renderLeaflet({ 
    infile=input$File 
    if (is.null(infile)) 
    return(NULL) 
    a2=coor() 
    leaflet() %>% 
    addProviderTiles("OpenTopoMap", group = "MapQuestOpen.Aerial") %>% 
    addMarkers(data =a2$A_new[[1]],~long, ~lat, popup = ~as.character(mag), label = ~as.character(Name))%>% 

    addMeasure() 
}) 

私は私のファイルを読んで、計算を行うとこのようになります私のA_new[[i]]ファイル取得:

A_new[[1]] 
     long  lat mag 
1 60.20424 34.61457 1100.0 
2 60.20739 34.61155 1098.3 
3 60.21058 34.60852 1099.7 
4 60.21382 34.60544 1100.5 
5 60.21700 34.60239 1100.0 
6 60.22039 34.59930 1102.7 
7 60.22388 34.59596 1103.0 
8 60.22743 34.59245 1101.3 
9 60.20323 34.60650 1080.0 
10 60.20653 34.60346 1080.0 
11 60.20966 34.60040 1080.8 
12 60.21277 34.59748 1082.7 
13 60.21590 34.59462 1084.1 
14 60.21890 34.59161 1083.1 

を私は選択入力にA_new [[i]]を持っていて、次にoutput$mymapに に関連するマップを返します。 マップ出力で選択入力オプションを設計できなかったので、最初にA_new[[i]]が表示されますA_new[[1]]

+1

問題は何ですか?あなたに問題を与えているコードを表示してください。可能であれば再現可能。 –

+0

@RomanLuštrik説明とサンプルコードを入れました –

答えて

0

fileinputを使用してCSVをアップロードしようとしていますか? CSVを読み込むためにfileinputを使用して解決策を試し、ドロップダウンリスト(selectInput)の列名を再アクティブに変更しました。 4列4列がリスト

に見せている

enter image description here

アップロード第一CSVは今、再び21を示している21列

enter image description here

でcsvファイルをアップロード列。

コード: ui.r

library(shiny) 

fluidPage(

    fileInput("file","Upload your CSV",multiple = FALSE), 
    wellPanel(
    tags$h3("Select the parameters below"), 
    checkboxInput(inputId = 'header', label = 'Header', value = FALSE), 
    checkboxInput(inputId = "stringAsFactors", "stringAsFactors", FALSE), 
    radioButtons(inputId = 'sep', label = 'Separator', choices = c(Comma=',',Semicolon=';',Tab='\t', Space=''), selected = ',') 
), 

    uiOutput("list_item") 
) 

Server.r

library(shiny) 
shinyServer(function(input, output, session){ 

    data <- reactive({ 
    file1 <- input$file 
    if(is.null(file1)){return()} 
    read.table(file=file1$datapath, sep=input$sep, header = input$header, stringsAsFactors = input$stringAsFactors) 

    }) 




    output$list_item<-renderUI({ 
    f<-data() 
    selectInput("selected_list","Select from the list",choices = as.list(colnames(f))) 
    }) 



}) 

あなたは私もこれでそれを行うことができますupadateselectinputを使用したい場合は...

関連する問題