2016-08-24 5 views
0

반짝이는 앱을 코딩했습니다. 그것은 사용자 입력 데이터 세트와 사용자 입력 종속 변수를가집니다. 그것은 종속 변수를 예측합니다. 종속 변수는 입력 $ 텍스트에 저장됩니다반짝이는 조건문에 값이 표시되지 않습니다.

UI.R에서

:

textOutput('contents2') 
server.RI에서

는 종속 변수가 요인 인 경우,이 클래스 수준을 예측하는 조건문을 언급 한 , 그렇지 연속 값 :

 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이며 논리 비교는 원하는 것을 수행하지 않습니다. 먼저 testdata()[[ 연산자로 서브 세트 화하여 문제를 해결할 수 있습니다.이 연산자는 벡터를 제공 한 다음 클래스를 검사합니다.

또한 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

관련 문제