2017-12-18 22 views
0

나는 Shiny의 선택 입력으로 대화 형 boxplot을 개발하려고 노력해 왔습니다.Shiny를 사용하여 boxplot을 대화 형으로 만들기

현재 코드 :

library(shiny) 

shinyUI(fluidPage(

    titlePanel("Sample 1"), 

    sidebarLayout(
    sidebarPanel(
     selectInput("p", "Choose your salaries", choices = c("low"='a',"mid"='b',"high"='c',"riches!"='d'), selected = 4) 
    ), 
    mainPanel(
     plotOutput("boxplot") 
    ) 
) 


)) 



library(shiny) 
read.csv("Salaries.csv") 

Categories <- cut (Salaries$TotalPay, breaks = c(0,36466,73678,104359,567595), labels = c("low","mid","high","riches!")) 

shinyServer(function(input, output){ 

    output$boxplot <- renderPlot({ 

    if(input$p=='a'){ 
     i<"1" 

    } 

    if(input$p=='b'){ 
     i<-"2" 
    } 

    if(input$p=='c'){ 
     i<-"3" 
    } 

    if(input$p=='d'){ 
     i<- "riches!" 
    } 


    boxplot(TotalPay~Categories[i]) 

    }) 
}) 

나는 상자 그림은 UI에서 선택한 반응을 얻을 수 없습니다. 나는 내가 호출 할 때와 수준과 관련이있다 생각 :

> Categories["riches!"] 
[1] <NA> 
Levels: low mid high riches! 

' 난 다음에 요소를 추가해야합니까? 아니면 완전히 그 요점을 놓치고 있습니까? 미리 감사드립니다.

+0

csv 파일을 데이터 프레임에 할당하고 있습니까? 급여 <- read.csv ("Salaries.csv") –

답변

0

보십시오 방법은 access the column by name입니다. 아래 예는 mtcars 데이터 세트입니다.

library(shiny) 

ui <- fluidPage(
    selectInput("p","p",choices = names(mtcars)), 
    plotOutput("myplot")) 

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

    output$myplot <- renderPlot({ 
    boxplot(mtcars[,input$p]) 
    }) 
} 

shinyApp(ui, server) 
+0

감사합니다 돼지 고기, 나는 그것을 밖으로 시도하고 다시 당신에게 돌아갑니다 – BadLuckNick

+0

안녕하세요 돼지 고기, 그것을 시도하고 나에게 줬어 : 오류 $ 연산자 .. 원자 벡터의 잘못 ' (광택) read.csv ("Salaries.csv") 카테고리 <라이브러리 - 컷 (봉급 $ TotalPay, 나누기 = C (03646673678104359 , 567,595), 라벨 = C ("낮은", "중간", "고", "재물!")) shinyServer (함수 (입력, 출력) { 출력 $ 박스 플롯 <- ({ renderPlot 상자 그림 (TotalPay [카테고리 $의 P]) }) }) '유 '카테고리 $ P는 "'라는 더 열이 없기 때문에 U 오류가 점점'당신의 부분 집합'"낮음 "같은 것을 할 필요가 – BadLuckNick

+0

'또는''mid "'를 사용할 수 있습니다! '> 이름 (급여) [1] "ID", "EmployeeName" "JobTitle" "BasePay" "OvertimePay" [6] "OtherPay" "장점" "TotalPay : –