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)
其他说明:
- 最终,我想以交互方式添加和删除行
出色地。
- 我正在使用这个 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 添加两行后下拉菜单的样子:
我正在尝试使用 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)
其他说明:
- 最终,我想以交互方式添加和删除行 出色地。
- 我正在使用这个 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 添加两行后下拉菜单的样子: