2016-04-22 1 views
0

私はデータテーブル機能を光沢のあるものにしています。私はデータパネルのすべての列を一覧表示するウェルパネルまたはサイドパネルの作成に興味があり、ユーザーは、データテーブルを参照してください。光沢のあるユーザーが表示する列を選択できるようにする

今ディスプレイ下にこのコードおもちゃのデータセットのすべての列mtcars

library(shiny) 

runApp(list(
    ui = basicPage(
    h2('The mtcars data'), 
    dataTableOutput('mytable') 
), 
    server = function(input, output) { 
    output$mytable = renderDataTable({ 
     mtcars 
    }) 
    } 
)) 

私は、ユーザーがいずれかのこれらの列をオンにする機能を提供するか、チェックボックス

[1] "mpg" "cyl" "disp" "hp" "drat" 
    [6] "wt" "qsec" "vs" "am" "gear" 
    [11] "carb" 
を使用してオフに興味があります

この問題に対処するための助けがあれば、大いに喜んでいます。前もって感謝します。

答えて

1

私の例では、これは賢明に見える複数の列

library(shiny) 

vchoices <- 1:ncol(mtcars) 
names(vchoices) <- names(mtcars) 

runApp(list(
    ui = basicPage(
    h2('The mtcars data'), 
    checkboxGroupInput("columns","Select Columns",choices=vchoices,inline = T), 
    dataTableOutput('mytable') 


), 
    server = function(input, output) { 

    observeEvent(input$columns,{ 
     cols <- as.numeric(input$columns) 
     if(length(input$columns) == 1){ 
     df <- data.frame(mtcars[,cols]) 
     names(df) <- names(mtcars)[cols] 
     output$mytable = renderDataTable(df) 

     }else{ 
     output$mytable = renderDataTable(mtcars[,cols]) 

     } 


    }) 

    } 
)) 
+0

私はあなたのアプローチが好きです。私は、ユーザーがフィルタリングされたデータテーブルをダウンロードできるように、トップにダウンロードボタンを追加する予定です。あなたのコードが上のような列をレイアウトしていれば、私の恐怖は、ダウンロードオプションのためのスペースがないか、整列がうまくいかないかもしれないということです。 –

+0

レイアウトに関する光沢のあるドキュメントは、あなたが調べなければならないものかもしれません。 [リンク](http://shiny.rstudio.com/articles/layout-guide.html) –

+0

それはいいです、ありがとうアダム –

3

ここは例です。 selectInputを使用して列を選択し、1つまたは複数の特定の列を選択するまで、デフォルトですべての列を表示します。

library(shiny) 
runApp(list(
    ui = basicPage(
    selectInput("select", "Select columns to display", names(mtcars), multiple = TRUE), 
    h2('The mtcars data'), 
    dataTableOutput('mytable') 
), 
    server = function(input, output) { 
    output$mytable = renderDataTable({ 
     columns = names(mtcars) 
     if (!is.null(input$select)) { 
     columns = input$select 
     } 
     mtcars[,columns,drop=FALSE] 
    }) 
    } 
)) 
+0

を選択しcheckboxGroupInputを使用しています。 –

関連する問題