在shiny中,可以使用DT
包来创建交互式的数据表。要同时添加行和删除行,可以使用DT::datatable()
函数结合DT::addRow()
和DT::removeRow()
函数来实现。
下面是一个示例代码:
library(shiny)
library(DT)
ui <- fluidPage(
actionButton("addBtn", "添加行"),
actionButton("removeBtn", "删除行"),
DTOutput("table")
)
server <- function(input, output, session) {
data <- data.frame(
id = 1:5,
name = c("John", "Amy", "Tom", "Emily", "Mike"),
stringsAsFactors = FALSE
)
observeEvent(input$addBtn, {
data <- addRow(data, name = "")
})
observeEvent(input$removeBtn, {
selectedRows <- input$table_rows_selected
if (length(selectedRows) > 0) {
data <- removeRow(data, rows = selectedRows)
}
})
output$table <- renderDT({
datatable(data, editable = TRUE, selection = "multiple")
})
}
shinyApp(ui, server)
在上述代码中,我们首先创建了一个包含"id"和"name"两列的数据框。然后,在UI部分,我们使用了两个动作按钮,一个用于添加行,一个用于删除行。在服务器端,我们使用observeEvent()
函数来监听按钮的点击事件,并在点击时执行相应的操作。addRow()
函数用于添加一行,removeRow()
函数用于删除选中的行。最后,我们使用renderDT()
和datatable()
函数来渲染和显示数据表。
这样,用户就可以通过点击"添加行"按钮来添加新的空行,通过选中行并点击"删除行"按钮来删除选中的行。
领取专属 10元无门槛券
手把手带您无忧上云