我想有一個類似的工作示例: https://demo.shinyapps.io/029-row-selection/RStudio從數據表檢查排閃亮的列表
我試過的例子在我閃亮的服務器上運行Shiny Server v1.1.0.10000
,packageVersion: 0.10.0
和Node.js v0.10.21
,但它甚至沒有工作如果我從網站加載js和css文件。它根本不會從表中選擇行:
# ui.R
library(shiny)
shinyUI(fluidPage(
title = 'Row selection in DataTables',
tagList(
singleton(tags$head(tags$script(src='//cdn.datatables.net/1.10.2/js/jquery.dataTables.js',type='text/javascript'))),
singleton(tags$head(tags$script(src='//cdn.datatables.net/1.10.2/css/jquery.dataTables.min.css',type='text/css')))
),
sidebarLayout(
sidebarPanel(textOutput('rows_out')),
mainPanel(dataTableOutput('tbl')),
position = 'right'
)
))
# server.R
library(shiny)
shinyServer(function(input, output) {
output$tbl <- renderDataTable(
mtcars,
options = list(pageLength = 10),
callback = "function(table) {
table.on('click.dt', 'tr', function() {
$(this).toggleClass('selected');
Shiny.onInputChange('rows',
table.rows('.selected').indexes().toArray());
});
}"
)
output$rows_out <- renderText({
paste(c('You selected these rows on the page:', input$rows),
collapse = ' ')
})
})
然後我嘗試從使用單選按鈕重新排序行的不同示例執行此操作。
以我變形例中,我想產生從在所述網頁中示出的數據表表的所選擇複選框按鈕ID的列表。例如,從第5選擇一些行,我希望我的文本框爲:1,3,4
對應mymtcars$id
專欄中,我加入到mtcars。然後,我計劃將一個操作鏈接到文本框的值。
我幾乎沒有在這個例子中,但檢查框不更新在文本框中的列表。與示例shinyapp不同,我希望我的複選框在表格被採用時保持選擇狀態。這可能是棘手的部分,我不知道該怎麼做。我還想在表格的左上角添加一個「選擇/取消全選」文本框,選擇/取消選擇表格中的所有框。有任何想法嗎?
# server.R
library(shiny)
mymtcars = mtcars
mymtcars$id = 1:nrow(mtcars)
shinyServer(function(input, output, session) {
rowSelect <- reactive({
if (is.null(input[["row"]])) {
paste(sort(unique(rep(0,nrow(mymtcars)))),sep=',')
} else {
paste(sort(unique(input[["row"]])),sep=',')
}
})
observe({
updateTextInput(session, "collection_txt",
value = rowSelect()
,label = "Foo:"
)
})
# sorted columns are colored now because CSS are attached to them
output$mytable = renderDataTable({
addCheckboxButtons <- paste0('<input type="checkbox" name="row', mymtcars$id, '" value="', mymtcars$id, '">',"")
#Display table with checkbox buttons
cbind(Pick=addCheckboxButtons, mymtcars[, input$show_vars, drop=FALSE])
}, options = list(bSortClasses = TRUE, aLengthMenu = c(5, 25, 50), iDisplayLength = 25))
})
# ui.R
library(shiny)
mymtcars = mtcars
mymtcars$id = 1:nrow(mtcars)
shinyUI(pageWithSidebar(
headerPanel('Examples of DataTables'),
sidebarPanel(
checkboxGroupInput('show_vars', 'Columns to show:', names(mymtcars),
selected = names(mymtcars))
),
mainPanel(
dataTableOutput("mytable")
,textInput("collection_txt",label="Foo")
)
)
)
我最終使用了第二個例子,它不需要更新我的軟件就能很好地工作。 – 719016 2014-10-01 12:29:24
輸入[[「rows」]]所選行的值? 因爲我有一個類似的例子,我無法獲得檢查行的值。 Plz澄清。 – OmaymaS 2016-12-31 21:36:21