2017-06-23 13 views
2

私は、グラフィックスを描画するはずの光沢のあるアプリケーションにチェックボックスを含めることを試みています。 私の問題は単純なようですが、私は自分で解決することができませんでした:(StackOverflowやRヘルプツールの複数のCheckboxGroupInput質問にもかかわらず...checkboxGroupInput in R giny in ggplot

私は8つのエッセイ1から8までの名前)と5つのコントロールエッセイ(PC1からPC5まで) 私のアプリは、あなたが見たいエッセイをチェックボックスで尋ね、同じグラフィックでそれらを描くことを願う。 。

:あなたは(2つのグラフィックで)見たい、これは魅力のように働いている二つの変数のドロップダウンメニューの提示

ここでは私のUIの簡易版であります

ui <- dashboardPage(
    dashboardHeader(title="Test", 
       dropdownMenu(type = "notifications", 
          notificationItem(
          text = "Verifier les points centraux", 
          icon = icon("exclamation-triangle"), 
          status = "warning" 
          ) 
      )    
), 
    dashboardSidebar(
    sidebarMenu(
    menuItem("Suivi par Variable", tabName = "SuiviVariable", icon = 
icon("area-chart")) 
) 
), 
    dashboardBody(
    # Suivi par Variable tab content 
    tabItem(tabName = "SuiviVariable", 
      h2("Graphique de Suivi pour Chaque Variable d'Intérêt"), 
      fluidRow(
      box(title = "Choisir deux variables à comparer", status = 
"info",br(), 
       selectInput("Variable1", label = "Variable 1", 
          choices = list_variables, 
          selected = list_variables[1]), 
       selectInput("Variable2", label = "Variable 2", 
          choices = list_variables, 
          selected = list_variables[1]), 
       checkboxGroupInput("Essais", "Essais à afficher :",c(1:8,"PC1", "PC2", "PC3", "PC4", "PC5")), 
       plotOutput("plot5", height = 600), 
       plotOutput("plot6", height = 600) 
      ) 
     ) 
) 
)) 

チェックボックスが正しく表示されるため、uiの部分は大丈夫です。ここで

は、サーバーの一部です:そこ

server<-function(input, output){ 
     output$plot5 <- renderPlot({ 
    a<- as.vector(input$Essais) 
    dataTest <- as.data.frame(TrameTest[a,]) 
    ggplot(data=dataTest, aes(x= N_ByEssai,y=dataTest[,input$Variable1], group= Nom, colour=Nom))+ 
    geom_line()+ 
    xlab("Duree de l'Essai")+ 
    ylab(input$Variable1) 
    }) 
    output$plot6 <- renderPlot({ 
    dataTest <- as.data.frame(TrameTest[input$Essais,]) 
    ggplot(data=dataTest, aes(x= N_ByEssai,y=dataTest[,input$Variable2],group= Nom, colour=Nom))+ 
    geom_line()+ 
    xlab("Duree de l'Essai")+ 
    ylab(input$Variable2) 
    })} 

あなたは私が無駄に、入力$ Essaisを使用しようとしました見ることができます。 CheckboxGroupOutputが文字ベクタを返すと私はそれが私の問題であったかもしれないと感じたので、私はas.vectorでそれを騙そうとしましたが、結果は変わりませんでした: チェックボックスに応じて、凡例PC1/NAと私が認識できない値(唯一の!)を持つ空のグラフィックまたはグラフィック。

TrameTest [input $ Essais]をx値に使うことができない理由が分かりますか?それはベクターではないからですか? 私はリファレンスとして使用できるCheckboxGroupInputのsimle(まだRとあまりよくない)の例はありますか?

お時間を事前に感謝し、アイデアが

答えて

0

私が働く何かを発見しました! サーバー部分では、データフレーム(TrameTest)をサブセット化することから始め、入力$ Essaisに対応する名前の行だけを保持します。 次に、サブセット化されたデータフレーム(dataTest)で作業するプロットが簡単です。

output$plot5 <- renderPlot({ 
dataTest<-subset(TrameTest, TrameTest[,2] %in% input$Essais) 
ggplot(data=dataTest, aes(x= N_ByEssai,y=dataTest[,input$Variable1], group = Nom, colour=Nom))+ 
    geom_line()+ 
    xlab("Duree de l'Essai")+ 
    ylab(input$Variable1) 
    }) 
0

あなたの問題は光沢ではなく、選択の誤解です。それはinput$Essaisに対応rownamesを見つけ、これらの行を選択するかどうかを

TrameTest[input$Essais,] 

チェックします。しかし、コードと自分の答えから、input$Essaisが2番目の列に表示されている行が必要であることは明らかです。これはまったく違ったものです。というのは、あなたの新しいコードは複数の出現を可能にするのに対して、rownamesは一意でなければならないという事実から始まります。input$Essaissubset()内部関数を使用した

は、 ?subsetに反対advicedさ:

これは対話形式での使用を目的と便利な関数です。 プログラミングでは、 [のような標準サブセット関数を使用する方が良いでしょう。特に、引数サブセット の非標準評価は予期しない結果を招く可能性があります。

ので、最適なコードを持っているために、実行します。アドバイス

output$plot5 <- renderPlot({ 
    id <- TrameTest[, 2] %in% input$Essais 
    dataTest <- TrameTest[ id , ] 
    ggplot(data=dataTest, aes(x= N_ByEssai,y=dataTest[,input$Variable1], group = Nom, colour=Nom))+ 
    geom_line()+ 
    xlab("Duree de l'Essai")+ 
    ylab(input$Variable1) 
    }) 
+0

感謝を! – AUB