2016-08-24 1 views
0

光沢のあるアプリを構築しようとしました。目的は、入力ボックスにcsvファイルを入力させることでした。次に、テキストボックスに従属変数名を入力することができます。メインパネルには、モデルフィットとプロットの要約の詳細が表示されます。rpartが表示されている予測のための光沢のあるアプリ

library(shiny) 
shinyUI(fluidPage(

titlePanel(h1("ANALYSIS",align = "center")), 
sidebarLayout(
    sidebarPanel(

     fileInput('file1', 'Select CSV File', 
        accept=c('text/csv', 
          'text/comma-separated-values,text/plain', 
          '.csv')), 
     textInput("text", label = strong("Dependent Variable"), 
        value = "Enter Dependent Variable...") 
    ), 
    mainPanel(br(), 

       textOutput('text1'), 
       plotOutput('plot') 
     ) 
     ) 
)) 

がserver.Rとして以下:

私は ui.R として、以下のコード化されている

library(shiny) 
library(rpart) 
library(rpart.plot) 

shinyServer(function(input, output) { 

    output$text1 <- renderText({ 
    inFile <- input$file1 
    if (is.null(inFile)) 
     return(NULL) 
    data <-read.csv(inFile$datapath, header=input$header, sep=input$sep, quote=input$quote) 
    depVar <- input$text 
    modrpart <- rpart(depVar ~. ,data=data) 
    modrpart 
    #depVar 


}) 

    output$plot <- renderPlot({ 
     inFile <- input$file1 
     if (is.null(inFile)) 
      return(NULL) 
     data <-read.csv(inFile$datapath, header=input$header, sep=input$sep, quote=input$quote) 
     depVar <- input$text 
     modrpart <- rpart(depVar ~. ,data=data) 
     prp(modrpart) 
    }) 


}) 

RunAppが、その示すエラー「エラーで呼ばれています!無効な引数型 "です。 モデルの詳細とプロットは、意図したとおりにメインパネルに表示されません。私は何かが足りない。私はhttps://drive.google.com/open?id=0B0ByEpXfdtGWMjZHUGpNc3ZZSTgをテストに使用しました。ありがとう

+0

あなたがどこかにしてください –

+0

感謝を.csvファイルをアップロードすることができます。(この簡単なアップロードインターフェースはコメントでリクエストに応じてhere

read.csv(inFile$datapath, header=input$header, sep=input$sep, quote=input$quote)


EDITEDから取られます入力ボックスである。あなたがsidebarPanelの入力ボックスに、availbleでどんな小さなcsvファイルを選択することができます。 – Harry

答えて

1

最初に、dataという反応データセットを作成しました。このデータセットには、req(inFile)というデータセットがアップロードされている必要があります。入力の欠落によるエラー伝播を防止します。

data <- reactive({ 
    inFile <- input$file1 
    req(inFile) 
    data <- read.csv(inFile$datapath, header=input$header, sep=input$sep, quote=input$quote) 
    data 
    }) 

その後、従属変数の入力名が有効な変数であるという要件を使用して、モデルに対して別のリアクティブを作成しました。 input$textは文字列なので、paste0as.formulaの式を作成してモデルをトレーニングする必要があります。反応データセットをdata()を介してモデルに渡します。

model <- reactive({ 
    req(input$text %in% names(data())) 
    depVar <- input$text 
    mod <- as.formula(paste0(depVar, " ~ .")) 
    modrpart <- rpart(mod, data = data()) 
    modrpart 
    }) 

最後に、あなたがmodel()render*に機能を経由してモデルを渡すことができます(これらの二つの反応性物質を使用すると、不必要にコードを繰り返さないためにできるように)。私はrenderPrintrenderTextを変更

注意それ以外の場合はエラーをもたらすであろう。あなたが不足しているウィジェットを持っていたし、何input$headerといくつかの他はありませんでしたので:「無効な引数の型でエラーが発生しました:!」


(renderTextは「猫」機能を処理することはできません)あなたはこのエラーを得ました。私はそれを加えて修正した。そこ@PorkChop

library(shiny) 
library(rpart) 
library(rpart.plot) 

server <- shinyServer(function(input, output) { 

    data <- reactive({ 
    inFile <- input$file1 
    req(inFile) 
    data <- read.csv(inFile$datapath, header=input$header, sep=input$sep, quote=input$quote) 
    data 
    }) 

    # reactive test data 
    testdata <- reactive({ 
    inFile <- input$file2 
    req(inFile) 
    read.csv(inFile$datapath) 
    }) 

    model <- reactive({ 
    req(input$text %in% names(data())) 
    depVar <- input$text 
    mod <- as.formula(paste0(depVar, " ~ .")) 
    modrpart <- rpart(mod, data = data()) 
    modrpart 
    }) 

    output$text1 <- renderPrint({ # changed to renderPrint 
    model() 
    }) 

    output$plot <- renderPlot({ 
    prp(model()) 
    }) 

    # print predictions to the console 
    observe({ 
    pred <- predict(object = model(), newdata = testdata()) 
    print(head(pred, 10)) 
    }) 

}) 


ui <- shinyUI(fluidPage(

    titlePanel(h1("ANALYSIS",align = "center")), 
    sidebarLayout(
    sidebarPanel(

     fileInput('file1', 'Upload Train Data', 
       accept=c('text/csv', 
         'text/comma-separated-values,text/plain', 
         '.csv')), 
     tags$hr(), 
     checkboxInput('header', 'Header', TRUE), 
     radioButtons('sep', 'Separator', 
        c(Comma=',', 
        Semicolon=';', 
        Tab='\t'), 
        ','), 
     radioButtons('quote', 'Quote', 
        c(None='', 
        'Double Quote'='"', 
        'Single Quote'="'"), 
        '"'), 
     br(), 
     textInput("text", label = strong("Dependent Variable"), 
       value = "Enter Dependent Variable..."), 

     # new fileInput 
     br(), 
     fileInput('file2', 'Upload Test Data', 
       accept=c('text/csv', 
         'text/comma-separated-values,text/plain', 
         '.csv')) 

    ), 
    mainPanel(
     br(), 
     textOutput('text1'), 
     plotOutput('plot') 
    ) 
) 
)) 

shinyApp(ui, server) 
+0

おかげでたくさんの@UnnamedUser。私はこの上のビットをしようとしていた。私が追加したあのユーザーがテストデータを選択できるファイル入力ボックス。別の反応データセット 'testdata'を作成しました。今度はモデルフィットオブジェクトで予測しようとしました。これはエラーを出しています。私は予測を得るためにテストデータまたは元のデータをアップロードすると仮定します。元のデータはすでに反応データセットに保存されています。私はそのエラーを生成すると思います。あなたはプロセスを表示することはできますか? – Harry

+0

私は –

+0

はありがとうコードを更新@UnnamedUser – Harry

関連する問題