テーブル内の行は動的に変更されることがありますが、ユーザーによる既存の行の選択はそのまま残す必要があります。選択した行は行インデックスによって保存されるため、新しいdatatable()
がレンダリングされると、選択した行はどのように保持されますか?RのシャイニーのアプリケーションでDT datatableの行選択を固定する方法
0
A
答えて
0
解決策には2つの部分があります。最初にselection
パラメータのdatatable()
は、形式のリストを取ることができますlist(mode='multiple', selected=c(1,3))
2番目の部分は、新しいテーブルに残っている選択行を決定することです。 2番目の部分に対する1つの解決策は、データテーブルのコピーをセッション変数として保存することです。新しいデータテーブルが生成されると、古いテーブルは新しいテーブルと比較されます。選択された行インデックスの新しいセットは、古いテーブルと新しいテーブルの共通の行に基づいて計算されます。新しいテーブルへの行インデックスは、which(newkeys %in% oldkeys)
イディオムを使用して検索されます。ここで
shiny::runGist("https://gist.github.com/dkulp2/7ebb1c936d08f3434127e58d7798af28")
でRStudioから実行することができます
library(shiny)
ui <- fluidPage(
checkboxInput('yellow.only', 'Yellow Only'),
uiOutput('fruit.selection'),
DT::dataTableOutput("dt.fruit.selection")
)
server <- function(input, output) {
fruit.options <- reactive({
all.fruits <- c(grape='Grape', banana='Banana', papaya='Papaya', raspberry='Raspberry')
yellow.fruits <- c(FALSE, TRUE, TRUE, FALSE)
all.fruits[yellow.fruits | !input$yellow.only]
})
fruit.options.df <- reactive({
data.frame(fruits=fruit.options(), some.other.col=nchar(fruit.options()))
})
output$fruit.selection <- renderUI({ selectInput('fruit', 'Fruit', choices=fruit.options(), selected=input$fruit, multiple=TRUE, selectize=FALSE, size=length(fruit.options())) })
output$dt.fruit.selection <- DT::renderDataTable({
if (!exists('fruit.options.cache') || identical(fruit.options.cache, fruit.options.df())) {
rows.selected <- isolate(input$dt.fruit.selection_rows_selected)
} else {
rows.selected <- which(fruit.options.df()$fruit %in% fruit.options.cache$fruits[isolate(input$dt.fruit.selection_rows_selected)])
}
fruit.options.cache <<- fruit.options.df()
DT::datatable(fruit.options.cache, rownames=FALSE, selection=list(mode="multiple", selected=rows.selected))
})
}
# Run the application
shinyApp(ui = ui, server = server)
関連する問題
- 1. シャイニー+ DT:単一セル選択
- 2. RシャイニーDataTable選択された行の色
- 3. RピカピカダウンロードfiltreredのDataTable(DT)
- 4. DT :: datatable in R、flexdashboard
- 5. DTに行が選択されていないことを確認するシャイニー
- 6. Rシャイニーの更新選択ボックス
- 7. PrimeNG Datatableで行を選択/選択解除する方法は?
- 8. Rシャイニーで選択したデータセットの機能を表示する方法
- 9. データセット内の特定の行を選択する方法(R)
- 10. データテーブルの行選択によるレンダリング - シャイニー
- 11. DataTableからすべての行を選択する方法
- 12. MySQL - 固定数の行まで選択
- 13. vbnet選択dtへの選択
- 14. Shiny - DT - いくつかのDT:テーブル間での単一行の選択
- 15. 固定選択でcollection_selectを設定する方法
- 16. ShinyのDTテーブルの行選択を制限する
- 17. 前の行に基づいてR DT :: datatableのセルを変更します
- 18. Rで選択した行の特定の値を含む列を選択する方法は?
- 19. Antdマルチ選択コンポーネントのサイズを固定する方法は?
- 20. アップデートを選択せずにリセットするRシャイニー
- 21. 固定ヘッダーと列、選択固定行のスクロールテーブル
- 22. リーフレットの入力をシャイニーで選択
- 23. Datatableすべての行を選択
- 24. RシャイニーBSModalポップアップで選択した入力を表示
- 25. R DTフレキシブルテーブル幅
- 26. Rのデータフレームからデータ行を選択する方法は?
- 27. Rシャイニーggplotブラシ
- 28. Shiny DT :: datatable - 行が選択されたときにテーブルの内容を変更する
- 29. シャイニーで選択変更する
- 30. PrimeNG DataTable行の選択 - 色の変更