如何使用复选框从数据框或表中选择数据行? 我已经完成了以下代码,但似乎复选框项目是列,并没有真正显示结果。
感谢您的帮助。
shinyServer(function(input, output) {
dataset<-reactive({
data(cars)
cars
})
output$choose_data <- renderUI({
checkboxGroupInput("dtab", "Data Table", dataset())
})
dataset2<-reactive({
input$dtab
})
output$data_table <- renderTable({
data2()
})
})
shinyUI(pageWithSidebar(
headerPanel(""),
sidebarPanel(
uiOutput("choose_data"),
br()
),
mainPanel(
wellPanel("Data", tableOutput("data_table")
))))
答案 0 :(得分:3)
您好,您可以尝试包ReporteRs
,有一个函数FlexTable
用于创建html表(或单词表),例如:
library("shiny")
library("ReporteRs")
mymtcars <- head(mtcars)
# ui
ui <- fluidPage(
tags$h1("Table with checkboxes"),
tableOutput(outputId = "table"),
br(),
verbatimTextOutput(outputId = "out")
)
# server
server <- function(input, output) {
output$table <- renderFlexTable({
# Create checkboxes
mymtcars$Name <- paste0('<label><input type="checkbox" id="car', seq_along(rownames(mymtcars)), '"> <span>', rownames(mymtcars), '</span></label>')
mymtcars <- mymtcars[c("Name", names(mtcars))] # Put col 'Name' in the first place
ft <- vanilla.table(mymtcars) # convert to FlexTable objet
ft[, "Name", to = "header"] <- parLeft() # left align checkboxes
ft[, "Name"] <- parLeft() # left align header
return(ft)
})
# the inputs created are in input$car1, input$car2, ...
output$out <- renderPrint({
# results
res <- unlist(lapply(1:nrow(mymtcars), function(i) input[[paste0("car", i)]]))
print(res)
if (any(res)) {
print(rownames(mymtcars)[res])
}
})
}
# launch app
shinyApp(ui = ui, server = server)
结果如下:
有关FlexTable对象的更多信息,您可以查看here。
答案 1 :(得分:0)
一个例子。请注意我如何设置标签,并使用为checkboxGroupInput
,choose_row
指定的ID作为output$data_table
的输入参数。这可以替换您的server.R
文件。
shinyServer(function(input, output) {
data(cars)
cars <- cars[1:10,] ## limit ourselves to first 10 rows for example
## a UI element that we can use for selecting rows
output$choose_data <- renderUI({
labels <- setNames( as.list(1:nrow(cars)), paste("Row", 1:nrow(cars)) )
checkboxGroupInput("choose_row", "Select Rows", labels)
})
## render the data.frame at the selected rows
output$data_table <- renderTable({
cars[input$choose_row, ]
})
})
答案 2 :(得分:0)
添加一些HTML标记并使用`DT :: datatable(escape = F)进行显示。 以下代码很容易解释。
<input type="checkbox" id="checkbox1" class="styled">
是一个复选框标签。DT::datatable(escape = F)
构建html页面。 {r}
library(tidyverse)
tibble(
x = '<input type="checkbox" id="checkbox1" class="styled">This is a checkbox'
) %>%
DT::datatable(escape = F)
reg.exe
allows to create, read, set or delete registry keys and values