删除r中的特定行

删除r中的特定行,r,shiny,R,Shiny,我目前正在编写一个闪亮的应用程序,用户可以在其中添加和删除数据框中的行 为此,我首先使用以下方法初始化shinyServer函数中的数据帧: values <- reactiveValues() values$df <- data.frame(v1 = NA, v2 = NA, v3 = NA, v4 = NA,

我目前正在编写一个闪亮的应用程序,用户可以在其中添加和删除数据框中的行

为此,我首先使用以下方法初始化
shinyServer
函数中的数据帧:

values <- reactiveValues()
values$df <- data.frame(v1 = NA,
                      v2 = NA,
                      v3 = NA,
                      v4 = NA,
                      v5 = NA,
                      v6 = NA,
                      v7 = NA,
                      v8 = NA
                      )
到目前为止,这个代码对我来说非常适合。最后,我希望允许用户从数据帧中删除最后一行或特定行。为此,我有一个删除按钮(
input$delete.button
)和一个选择行的
numericInput()。我想要实现的逻辑应该是:如果没有选择任何特定行,则删除最后一行,否则删除所选行。我尝试过的代码是:

deleteEntry <- observe({
 if(input$delete.button > 0) {


  if(is.na(input$row.selection)){

    values$df <- isolate(values$df[-nrow(values$df), ])

  } else {

    what does here?

  }
}

})
有什么想法来实现这个逻辑吗? 最好的,
Fabian

只需使用


values$df你能为ui.R提供你的代码吗,这样你的问题就更容易重复了?嘿,保罗,我添加了ui.R的相关部分。不幸的是,我不能提供完整的ui.r,因为它是我正在从事的一个商业项目。如果您需要任何进一步的信息,请告诉我,我会尽力提供。实际上,我已经尝试了
values$df
deleteEntry <- observe({
 if(input$delete.button > 0) {


  if(is.na(input$row.selection)){

    values$df <- isolate(values$df[-nrow(values$df), ])

  } else {

    what does here?

  }
}

})
# Add button
actionButton(inputId = "add.button", label = "Add", icon = icon("plus")), 

# Delete button 
actionButton(inputId = "delete.button", label = "Delete", icon = icon("minus")),

# Row selection
numericInput(inputId = "row.selection", label = "Select row to be deleted", min = 1, max = 100, value = ""),
runApp(list(
  ui = shinyUI(
        fluidPage(
            sidebarLayout(
                sidebarPanel(
                    # Add button
                    actionButton(inputId = "add.button", label = "Add", icon = icon("plus")), 
                    # Delete button 
                    actionButton(inputId = "delete.button", label = "Delete", icon = icon("minus")),
                    # Row selection
                    numericInput(inputId = "row.selection", label = "Select row to be deleted", min = 1, max = 100, value = "")
                ),
                mainPanel(
                    verbatimTextOutput('text')
                )
            )
        )
  ),

    server = function(input, output, session) {
        values <- reactiveValues()
                values$df <- data.frame(v1 = NA,
                      v2 = NA,
                      v3 = NA,
                      v4 = NA,
                      v5 = NA,
                      v6 = NA,
                      v7 = NA,
                      v8 = NA
                      )

        newEntry <- observe({
            cat("newEntry\n")
            if(input$add.button > 0) {
                new.value <- isolate(input$v1 * input$v2 * input$v3 * input$v4)
                newRow <- isolate(c(input$v1, input$v2, input$v3, input$v4, 
                                                        input$v5, input$v6, input$v7, new.value))
                isolate(values$df <- rbind(values$df,sample(1:8)))
            }
        })

        deleteEntry <- observe({
            cat("deleteEntry\n")
            if(input$delete.button > 0) {
                if(is.na(isolate(input$row.selection))){
                    values$df <- isolate(values$df[-nrow(values$df), ])
                } else {
                    values$df <- isolate(values$df[-input$row.selection, ])
                }
            }

        })

        output$text = renderPrint({
                values$df 

        })

    }
)