在 Shiny 中添加列到 handsontable 无法更改

Added columns to handsontable in Shiny cant be changed

我正在尝试制作一个应用程序,用户可以在其中将列和行添加到 table 他们可以用来设置规则来对存储在另一个对象中的数据集进行排序。

我构建了一个 reprex 来隔离问题。 UI 在单击添加按钮时成功地将行和列添加到 table。额外的行工作正常。但是,无法更改新列中的单元格。您可以输入文本但不能切换单元格。我仍在学习 Shiny 的反应规则,并怀疑问题出在那里。我尝试采用

但无济于事。

library(shiny)
library(rhandsontable)
library(tidyverse)

ui <- fluidPage(
        actionButton("addRow",
                     "Add"),
        numericInput("rows",
                     "Number of Rows",
                     value = 0, 
                     min = 0),
        numericInput("colAnd",
                     "Number of And Cols",
                     value = 0, 
                     min = 0),
        numericInput("colBut",
                     "Number of But Cols",
                     value = 0, 
                     min = 0),
        rHandsontableOutput("hot")
)

server <- function(input, output) {

df <- reactive({
        tibble(Topic = "Null",
               And = "Null",
               But = "Null")
    })  

df2 <- eventReactive(input$addRow,{

add_row_custom<- function (df, n, add = "null") 
    {
        new <- data.frame(matrix(add, nrow = n, ncol = ncol(df)))
        colnames(new) <- colnames(df)
        rbind(df, new)
}

final <- hot_to_r(input$hot) 
        final %>% 
            add_row_custom(., input$rows ) %>% 
            cbind(., data.frame(matrix("null", 
                                       nrow = nrow(.), 
                                       ncol = input$colAnd + input$colBut)
                                )
                  )

    })

df4 <- reactive({
        if(input$addRow == 0){
            df()
        }else{
            df2()}
    })

output$hot <- renderRHandsontable(rhandsontable(df4()) %>% 
                                          hot_table(highlightRow = T,
                                                    highlightCol = T))
}

# Run the application 
shinyApp(ui = ui, server = server)

我花了 30 分钟才把头埋在这个上面几个小时,然后去了 rhandsontable 文档。

长话短说,在rhandsontable函数下添加参数useType = F。