2017-06-05 11 views
1

私は、因子のレベルによって連続変数の平均をプロットする簡単なアプリケーションを作成しようとしています。 ユーザーは、グループ化するいくつかの要因の1つを選択し、平均値に連続変数を選択します。アプリは、ggplotを使ってプロットを表示することになっています。この機能を光沢のある外でも使えるようにするのは簡単ですが、アプリケーション内で動作させるのは苦労しています。 問題はNSEとSEの理解が不足していることを知っていますが、数時間ドキュメントを見て、さまざまなバージョンをテストしたところ、これは私が思いつくことができる最高のものです。これは一般的な問題のようですが、スタックオーバーフローに関する私の問題に関連する回答はありません。

私は次の取得例 としてタイタニックデータセットを使用します。mean.defaultで

警告(入力の$ ContVar):引数が数値または 論理的ではありません:に加えて NA返しますエラーでは、プロットがレンダリングされても平均値は変化しません。

library(shiny) 
    library(dplyr) 
    library(ggplot2) 
    Titan <- as.data.frame(Titanic) 
    Titan <- mutate(Titan, Freq2 = Freq +3) 

    shinyApp(ui = basicPage(selectInput("FactVar", "Factor", choices = names(Titan)[1:4]), selectInput("ContVar", "Cont Variable", choices = names(Titan)[5:6]), plotOutput("surv")), server = function(input, output) { 
     output$surv <- renderPlot({ 
      Titan %>% 
      group_by_(~input$FactVar) %>% 
      summarize_(MeanFreq = ~ mean(input$ContVar))%>% 
      ggplot(aes_(x=~ MeanFreq, y = input$FactVar))+geom_point() 
     }) 
    }) 
+0

たぶん、[この](https://stackoverflow.com/questions/25211916/passing-user-specifications-as-arguments-to-dplyr-within-shiny?rq=1)が役立つだろう。 – SBista

+0

上記のリンクから私はこれを思いついた。 (%)を入力してください。)%)>%group_by_(〜入力$ FactVar)%>% summarize_(MeanFreq =〜平均(col))、 list(col = as.symbol(input $ ContVar))) ggplot(aes_(x =〜MeanFreq、y =入力$ FactVar))+ geom_point() ' – SBista

+0

問題に注意を喚起してくれたSBistaに感謝します。上記のソリューションは、コードを実行したときに問題を解決しませんでした。私は手がかりのために上のリンクを読むでしょう。 – Reric

答えて

0

それはdplyr使用していないものの、ここでは、オプションです。

私は集計を使用しており、結果の列の名前を明示的に指定しているので、後でggplotでこれらの名前を呼び出すことができます。

library(shiny) 
library(ggplot2) 
Titan <- as.data.frame(Titanic) 
Titan <- mutate(Titan, Freq2 = Freq +3) 

shinyApp( 

    ui = basicPage( 
    selectInput("FactVar", "Factor", choices = names(Titan)[1:4]), 
    selectInput("ContVar", "Cont Variable", choices = names(Titan)[5:6]), 
    plotOutput("surv")), 

    server = function(input, output) { 
    output$surv <- renderPlot({ 

    MeanFreq <- aggregate(list(ContVar = Titan[, input$ContVar]), 
          list(FactVar = Titan[, input$FactVar]), 
          mean) 

     ggplot(MeanFreq, aes(x = ContVar, y = FactVar)) + 
     geom_point() 
    }) 
}) 
関連する問題