2016-06-17 5 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とのデータフレームを選択することができますが、単に行のためにフィルタリングされますA以下C.はmodel.data0()は.csvファイルを介してユーザによって入力された反応データである。select_Input

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)  
} 

注用UIを生成するためのコードであるとこのコードの最初の部分はうまくいきます(しかし、フォーマットは次のものを混乱させるでしょうか?)、ユーザーの入力選択を表示します。そして、次の私たちは、「『猫』で扱うことができない引数1(タイプ 『リスト』)」しかし、これはのエラーを返します...

model.data<-reactive({ 
if(is.null(input$model.input)) 
    return() 

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

をselectInputからフィルタリングで私の試みをしています。私は上記の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を投稿しました。私には害はありません。 –

関連する問題