2017-12-24 7 views
0

ライブラリー(rworldmap)を使用してマップをプロットしたい場合は、データを選択するリアクティブ関数を使用できません。ユーザーがデータを選択することが許可されている。(例:countryRegionsまたはcountryExData)を ここでは、コードShiny Rの地図( "rworldmap")を選択したデータで表示する方法

library(rworldmap) 
library(shiny) 
data(countryRegions) 
data(countryExData) 

runApp(list( 
    ui= fluidPage(
    selectInput("dataset", "Data", c('countryRegions', 'countryExData')), 
    plotOutput("Cart", height="560px", width="950px") 
), 

    server = function(input, output) { 
    datasetInput <- reactive({ 
     switch(input$dataset, 
      'countryRegions' = countryRegions, 
      'countryExData' = countryExData) }) 
    if (datasetInput()==countryRegions) { 
     sPDF <- joinCountryData2Map(datasetInput() 
            , joinCode = "ISO3" 
            , nameJoinColumn = "ISO3") 

     output$Cart <- renderPlot({ 
     mapParams <- mapPolys(sPDF, nameColumnToPlot="AVOIDnumeric", 
           mapRegion='world', 
           missingCountryCol='dark grey', numCats=10, 
           colourPalette=c('yellow','green','blue'), 
           addLegend=TRUE, 
           oceanCol='light blue') 
     mtext("[Grey Color: No Data Available]",side=1,line=-1) 
     })} 
    if (datasetInput()==countryExData){ 
     ##maping 
     sPDF <- joinCountryData2Map(datasetInput() 
            , joinCode = "ISO3" 
            , nameJoinColumn = "ISO3V10") 
     output$Cart <- renderPlot({ 
     mapParams <- mapPolys(sPDF, nameColumnToPlot="Population2005", 
           mapRegion='world', 
           missingCountryCol='dark grey', numCats=10, 
           colourPalette=c('yellow','green','blue'), 
           addLegend=TRUE, 
           oceanCol='light blue') 
     mtext("[Grey Color: No Data Available]",side=1,line=-1) 
     }) 
    } 
    } 
)) 

また、ユーザーは、いくつかのデータの列を選択することができるようにするチャンスがある

+0

もう少し具体的になることはできますか?データセットのどの部分を動的に(反応環境を使用して)サブセット化できませんか? –

+0

私は 'selectInput(" dataset "、" Data "、c( 'countryRegions'、 'countryExData'))'を入力し、選択したデータに応じて、ユーザーがデータを選択できるようにしたいマッププロットでは、私は '反応的なデータセットの入力を使用している - 反応({ スイッチ(入力$データセット、...'それはよく使用していないことは明らかですが、私は間違いを見つけることができません) –

+0

あなたのワークフローの特定の変数に関する情報をどのように使用するかなど、小さな例を作成してください。 –

答えて

0

どうすれば?これらのことにアプローチすることは簡単に始まり、その後、(実用的な)スケルトンに基づいています。 if文が2つあり、それぞれが適切なデータセットに対応していることを確認します。 ifステートメントが入力値を確認していることを確認する必要があります。そのデータセットを割り当てましたが、アイデンティティ全体のデータセットをチェックするのは簡単ではなく、少なくともこの場合は、ワークフロー全体を制御できるので必要ありません。

例えば、

runApp(list( 
    ui= fluidPage(
    selectInput("dataset", "Data", c('countryRegions', 'countryExData'), selected = NULL), 
    plotOutput("Cart", height="560px", width="950px") 
), 

    server = function(input, output) { 
    output$Cart <- renderPlot({ 
     if (input$dataset == "countryRegions") { 
     message("Selected countryRegions") 
     plot(x = 1:10, y = rnorm(10), main = "Selected countryRegions") 

     } 
     if (input$dataset == "countryExData") { 
     message("selected countryExData") 
     plot(x = 1:10, y = rnorm(10), main = "Selected countryExData") 
     } 
    }) 
    } 
)) 

のは、最初の適切な出力を作成してみましょうこれはどんなオプションが、それがデバイスにプロットされ、選択されたことを説得します。 はその後、そうのような独自の機能の追加を開始:

runApp(list( 
    ui = fluidPage(
    selectInput("dataset", "Data", c('countryRegions', 'countryExData'), selected = NULL), 
    plotOutput("Cart", height="560px", width="950px") 
), 

    server = function(input, output) { 
    output$Cart <- renderPlot({ 
     if (input$dataset == "countryRegions") { 
     sPDF <- joinCountryData2Map(countryRegions 
            , joinCode = "ISO3" 
            , nameJoinColumn = "ISO3") 

      mapParams <- mapPolys(sPDF, nameColumnToPlot = "AVOIDnumeric", 
           mapRegion = 'world', 
           missingCountryCol = 'dark grey', numCats = 10, 
           colourPalette = c('yellow', 'green', 'blue'), 
           addLegend = TRUE, 
           oceanCol = 'light blue') 
      mtext("[Grey Color: No Data Available]", side = 1, line = -1) 

     } 
     if (input$dataset == "countryExData") { 
     message("selected countryExData") 
     plot(x = 1:10, y = rnorm(10), main = "Selected countryExData") 
     } 

    }) 
    } 
)) 

これはあなたのinput$dataset == "countryRegion"のための世界地図とinput$dataset == "countryExData"のための一般的なプロットを表示します。ここからそれと一緒にフィドル。

enter image description here

関連する問題