2016-08-24 7 views
0

私は光沢のあるアプリをコーディングしました。これは、ユーザー入力データセットとユーザー入力依存変数を持ちます。依存変数を予測します。 従属変数はUI.Rで入力$テキスト光沢のある条件文は値を表示しません

に格納されていますserver.RIで

textOutput('contents2') 

はそうでない場合は、連続的、従属変数が要因であるならば、それはクラスレベルを予測する条件文を記載しています値:

 output$contents2 <- renderText({ 
     if(class(input$text)=="factor"){ 
      predict(modelc(), newdata=testdata(),type="class")} 

     if(class(input$text)=="numeric"){ 
       predict(model(), newdata=testdata()) 

     } 
    }) 

ただし、予測値は表示されません。何が欠けているのだろうと思っていた。ありがとう

+0

'modelc()'、 'model()'および 'testdata()'は関数(データまたはモデルオブジェクトである必要があります)のように見えます。これは本当にあなたが何をしているのですか? –

+0

@RomanLuštrikこれは[この質問の続き](http://stackoverflow.com/questions/39116546/shiny-app-for-prediction-with-rpart-displaying-error/39121161?noredirect=1#comment65595711_39121161) –

答えて

1

renderTextで値が返されないため、何も表示されない場合は、predict(...)returnの関数にラップして簡単に修正できます。

ただし、別のバグがあります。 input$textは文字列であるため、そのクラスはcharacterであり、論理的比較はあなたが望むことをしません。最初にベクトルを[[という演算子でサブセット化することで修正できます。この演算子はベクトルを与え、そのクラスをチェックします。

あなたはまた、inputed変数の名前が実際に有効な変数であることを確認する必要があります - 通常通りreq機能(またはvalidateneed)で


全例:

output$contents2 <- renderText({ 

    req(input$text %in% names(testdata())) 
    test <- class(testdata()[[input$text]]) 

    if (test == "factor") { 
    return(predict(modelc(), newdata = testdata(), type = "class")) 
    } 
    if (test == "numeric") { 
    return(predict(model(), newdata = testdata())) 
    } 
}) 
+0

ありがとう@UnnamedUser。分類のための予測ベクトルは、1,1,2,3,1、..を印刷しています。代わりに、クラスレベルの名前を印刷するように変更できます。 – Harry

関連する問題