2017-11-03 4 views
0

2つの列「Alpha1」と「Beta2」を含むExcelスプレッドシートがあります。問題をプロットすると、光沢問題のオブジェクトサーバーが見つかりません。

R光沢を使って各列をヒストグラムにプロットしたいと思います。私のコードは以下の通りです:

install.packages("shiny","magrittr", "ggplot2") 
library(shiny) 
library(magrittr) 
library(ggplot2) 

data<-read.csv(file='testdata.csv', stringsAsFactors = FALSE, sep=",") 

ui<-fluidPage("data", 
       #define UI, 
       titlePanel(title="Excel data"), 
       selectInput("data$Alpha1", "data$Beta2"), 
       mainPanel("excel data main panel", 
         plotOutput("data$Alpha1"), 
         plotOutput("data$Beta2")) 
      ) 

server<-function(input,output) { 

    output$data <- renderPlot({plot(data$Alpha1), 
           plot(data$Beta2)}) 
}) 
shinyApp(ui=ui, server=server) 

これはなぜ動作しないのでしょうか?

また、私はエラーを取得しています:

Error in shinyApp(ui = ui, server = server) : object 'server' not found

+0

を。 plotOutput( "data")に変更する – Mark

+0

また、それぞれのplotOutputは1つのプロットしか保持しませんが、同じ出力に2つ入れています – Mark

+0

こんにちは@Markは応答してくれてありがとう。 Alpha1は、「データ」という名前に割り当てられたExcelテーブルの列名の1つです。 私は、列名を参照するために$を使用することはスタジオでは機能しますが、光沢が違っていることは知っていますか? – sineadbrack

答えて

0

あなたのコードはどのように光沢のある作品の基本的な理解の欠如を示唆しています。すべてのUI入力(selectInputnumericInputなど)はすべてinputによってサーバーレイヤーで使用され、すべてのUI出力(plotOutputverbatimOutputなど)はすべてoutputIdのものが使用されていますが、サーバーレイヤーはoutput経由です。これらのIdは、data.frame(data.frameがinputまたはoutputのいずれか)の列名のように扱われる文字列です。

コードには間違いがありますので、私はあなたのコードを少しずつ分解し、何が間違っているのかを説明します。私はあなたのデータセットを持っていないので、私は?fluidPageからデータ

data<-data.frame(Alpha1 = runif(100),Beta2 = rnorm(100)) 

のためにこれを使用するつもりだ我々はそれが最初...を取り、いくつかの名前付き引数を持っている、titleはそれらの一つであることがわかります。だから最初に浮動小数点を持っている"data"title="data"になる必要があります。

次に、?selectInputは、inputId,labelおよびchoicesの3つが必要です。 inputIdは、サーバーでUIオブジェクトを参照する方法です。したがって、selectInput('si1','First Select Input',list(choice1="Choice 1", choice2="Choice 2")は、目に見えるラベル「First Select Input」と選択肢を持つドロップダウンボックスを生成します。コードのサーバー部分では、input$si1で参照できるようになります。

今、2つのplotOutputがあります。 ?plotOutputから、最初の引数はoutputIdです。したがって、plotOutput('Alpha1')はサーバ側でoutput$Alpha1と参照されます。あなたが持っているどこplotOutput("data$Alpha1")あなたが持っているラベルが最後に

output$`data$Alpha1` 

として参照されるように作成した、あなたは2 plotOutputつだけrenderPlotを持っている、あなたは、各plotOutputに1つ必要です。また、各renderPlotは1つのプロットしか作成できないので、複数を作成すると最後のものが返されます(Rの関数が最後の行を自動的に返す方法と同じです)。

すべて一緒にこれを入れて、あなたは以下のコードを持って:あなたはデータ$アルファ1として、あなたにplotOutput名を定義しているが、あなたはその名前には何を割り当てることはありません

ui<-fluidPage(title = "data", 
      titlePanel(title="Excel data"), 
      selectInput("si1","Select Column",list("Alpha1", "Beta2")), 
      mainPanel("excel data main panel", 
        plotOutput("Alpha1"), 
        plotOutput("Beta2")) 
) 

server<-function(input,output) { 
    output$Alpha1 <- renderPlot({plot(data$Alpha1)}) 
    output$Beta2 <- renderPlot({plot(data$Beta2)}) 
} 
shinyApp(ui=ui, server=server) 
+0

あなたの有益かつ明確な投稿、Markに感謝します。私は間違いなくR輝きの私の理解を高める必要があります。私はオンラインのいくつかのオンラインチュートリアルを完了しましたが、まだそれを把握することはできません。このコードは、私が履修しなければならない大学の課題の一部です。私はまた、これらの2つのプロットする方法を理解する必要があります "アルファ1"と "ベータ2"は、ユーザーが軸を変更することができます散布図。 r shinyと一緒に働くプロフェッショナルとして、お勧めできるリソース(オンラインまたは書面)がありますか?どうもありがとう、ありがとう、Sinead – sineadbrack

関連する問題