【问题标题】:rhandsontable and shiny: glitches while editing interactive tablerhandsontable and shiny:编辑交互式表格时出现故障
【发布时间】:2017-05-28 03:08:32
【问题描述】:

我正在尝试使用 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 小部件。

【问题讨论】:

  • 天哪,你的意思是方程没有什么好处?
  • 不是我发现的。我希望我只是无知。
  • 我也看过 - 我通常最终使用 Microsoft Word 公式编辑器,这很糟糕,但不如尝试阅读我的笔迹。或者试图记住我总是在完成某事后 15 分钟忘记的乳胶。
  • 在这种情况下,我只是尝试将方程作为数据输入到 R 包中,同时为用户提供一些指导。整齐地展示它会很酷,但这里没有必要。
  • 我不擅长rhandsontable,但当我结束这次会议时会看看。 :)

标签: r shiny rhandsontable


【解决方案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)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    • 2020-03-03
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    相关资源
    最近更新 更多