rhandsontable和有光泽:编辑交互式表格时出现故障

时间:2017-01-12 20:58:13

标签: r shiny rhandsontable

我正在尝试使用rhandsontable在Shiny应用中设置交互式表格,但我无法编辑条目。实际上,我必须使用转义键在我选择它们后取消选择单元格,并且缺少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. 我正在使用这个表来构建一个等式,所以请随意 忽略这个表格的东西,并告诉我一个很酷的方程式构建器 HTML小部件。

1 个答案:

答案 0 :(得分:1)

不清楚你要在这里做什么,但我认为这解决了一些问题。

  • 您需要在创建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)

在我通过右键单击添加两行后,下拉列表就是这样的:

enter image description here