rhandsontable 和 shiny:编辑交互式 table 时出现故障

rhandsontable and shiny: glitches while editing interactive table

我正在尝试使用 rhandsontable 在 Shiny 应用程序中设置交互式 table,但我无法编辑条目。事实上,一旦我选择了单元格,我就必须使用转义键取消选择它们,并且缺少 op 列的下拉菜单。这是应用程序。

library(rhandsontable)
library(shiny)

ui = fluidPage(rHandsontableOutput("equation"))

server = function(input, output){
  values = reactiveValues(equation = 
    data.frame(A = "A value", op = ">", B = "B value"))

  observe({
    if(!is.null(input$equation))
      values$equation = hot_to_r(input$equation)
  })

  output$equation = renderRHandsontable({
    rhandsontable(values$equation) %>%
      hot_col(col = "op", source = c(">", "<"))
  })
}

shinyApp(ui = ui, server = server)

其他说明:

  1. 最终,我想以交互方式添加和删除行 出色地。
  2. 我正在使用这个 table 来建立一个方程式,所以请随意 忽略这个 table 东西并告诉我一个很酷的方程生成器 HTML 小部件。

不太清楚您在这里要做什么,但我认为这可以解决几个问题。

  • 您需要在创建 op 因子变量时声明您的水平,并且通常您必须非常明确地说明 rhandsontable 数据框中列的类型。出于这个原因,在 reactiveValues 调用之外构建它是有意义的,因此您可以事先检查它。
  • 因子下拉列表永远不会低于网格,因此您必须 有足够的空间来显示因子下拉列表。我插入了一个 几行并选择下拉列表以在下面说明这一点。

调整后的代码如下:

library(rhandsontable)
library(shiny)

ui = fluidPage(rHandsontableOutput("equation"))

server = function(input,output) {

  eqdf = data.frame(A_value = as.numeric(0),op = factor(c(">"),levels=c(">","<")),B_value = as.numeric(0))
  print(eqdf)
  values = reactiveValues(equation=eqdf)

  observe({
     req(input$equation)
     values$equation = hot_to_r(input$equation)
  })

  output$equation = renderRHandsontable({
    rhandsontable(values$equation) 
  })
}
shinyApp(ui = ui,server = server)

这是我用 right-click 添加两行后下拉菜单的样子: