2016-06-17 2 views
1

사용자가 .csv 파일을 업로드하도록 한 다음 해당 .csv 파일의 열 (인수)을 가져 와서 해당 입력란의 고유 이름을 결정하는 사용자 입력을 만듭니다. 데이터 프레임에 대해 선택됩니다.R의 selectInput에서 필터링

내가 다음 예제 data.frame이 그래서 경우 :

COURSE VALUE 
1  A  7 
2  C  2 
3  C  2 
4  B  9 
... 

내가 선택을 선택할 수 있습니다 Select_Input 사용자를 사용하여 필터링 할 것을 A와 C 및 데이터 프레임은 단지 행을 필터링 할 것이라고 말한다 C. A와 이하 참고

output$choose_course<-renderUI{ 
# If missing input, return to avoid error later in function 
if(is.null(input$model.input)) 
return() 

# Get the data set with the appropriate name 
course.names <-c("All",as.vector(t(unique(select_(model.data0(),"COURSE"))))) 

selectInput("courses","Choose courses", choices=course.names, multiple=TRUE)  
} 

select_Input

동안 그 model.data0()를 .csv 파일을 통해 사용자가 입력 한 데이터가 무효 인 UI를 생성하기위한 코드이다. 코드의 첫 번째 부분은 정상적으로 작동하지만 (형식이 다음 항목을 어지럽히 는가?) 사용자 입력 선택을 표시합니다. 그리고 다음에 우리는 selectInput에서 필터링에서 내 시도 ...
model.data<-reactive({ 
if(is.null(input$model.input)) 
    return() 

localdata<-model.data0() 
if(input$courses!="All"){ 
    localdata<-localdata[localdata$COURSE==unlist(input$courses),] 
} 
}) 

그러나,이의 오류 반환 "인수 1 (유형 '목록') '고양이'에서 처리 할 수 ​​없습니다"가. 위의 unlist를 벡터로 변경하려고 시도했지만 작동하지 않는 것 같습니다. 이 필터를 어떻게 만들 수 있습니까?

+0

사과를, 내가 제대로 내 테스트를위한 출력을 포맷하지 않은 것으로 보인다 내가에서 오류가 발생 된 곳이다. –

답변

2

당신은이 일을 시도 할 수 :

require(shiny) 

ui <- fluidPage( 
    sidebarLayout(
    sidebarPanel(
     uiOutput('choose_course') 
    ), 
    mainPanel(
     tableOutput('courseTable') 
    ) 
) 
) 

server <- function(input, output, session) { 
    # Build data, would be replaced by the csv loading in your case 
    n <- 10 
    model.data0 <- reactive ({ 
    data.frame("COURSE" = sample(LETTERS[1:3], n, replace=TRUE), 
       "VALUE" = sample(1:10, n, replace=TRUE)) 
    }) 

    # Render selectInput 
    output$choose_course <- renderUI({ 
    course.names <- as.vector(unique(model.data0()$COURSE)) 
    selectInput("courses","Choose courses", choices=course.names, multiple=TRUE)  
    }) 

    # Subset so that only the selected rows are in model.data 
    model.data <- reactive({ 
    subset(model.data0(), COURSE %in% input$courses) 
    }) 

    output$courseTable <- renderTable({ model.data() }) 
} 
runApp(shinyApp(ui,server)) 
+0

대단히 감사합니다! 나는 내 프로그램이 작동하고있어 나중에 참조 할 때 이것을 명심 할 것이다. –

+0

내가 도와 줄 수있어서 다행이다. 내가 처음으로 anwser를 게시 한 이유에 대해 의견을 말씀 드렸습니다. 나는 아무런 해를 끼치 지 않았다. –