我正在尝试使用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)
其他说明:
答案 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)
在我通过右键单击添加两行后,下拉列表就是这样的: