我想使用操作按钮删除表格的最后一行。我试过关注这篇文章Shiny: dynamically add/ remove textInput rows based on index 但我不知道如何将这个想法应用到我的特定情况。
最小可重复的例子
library(shiny)
ui <- fluidPage(
sidebarPanel(numericInput("c1","Example", NA),
actionButton("update", "Update Table"),
br(), br(),
actionButton("reset", "Clear")
),
mainPanel( tableOutput("example")
)
)
server <- function(input, output, session) {
# stores the current data frame, called by values() and set by
values(new_data_table)
values <- reactiveVal(data.frame(A=1, B=2, C=3))
# update values table on button click
observeEvent(input$update,{
old_values <- values()
A_new <- input$c1
B_new <- A_new + 2
C_new <- A_new + B_new
new_values <- data.frame(A=A_new, B=B_new, C=C_new)
# attach the new line to the old data frame here:
new_df <- rbind(old_values, new_values)
#store the result in values variable
values(new_df)
#reset the numeric input to NA
updateNumericInput(session, "c1", "Example", NA)
})
#delete last row
deleteEntry <- observeEvent(input$reset,{
#....
})
#Print the content of values$df
output$example <- renderTable({ return(values()) })
}
shinyApp(ui = ui, server = server)
实际上我不知道如何调用交互式数据框的最后一行。我尝试过像values()&lt; - values [nrow(values()) - 1]这样的东西,但它没有用。有什么建议吗?
已编辑
根据下面的建议,我修改了deleteEntry函数,现在它可以正常工作。
##delete last row
deleteEntry <- observeEvent(input$reset,{
values( values()[-nrow(values()),])
})
答案 0 :(得分:1)
要将data.frame
的最后一行删除为reactiveVal
,请使用以下语法:
values(values()[-nrow(values()),])