我正在尝试开发一个应用程序,用户可以在其中向表添加列和行,他们可以用来设置规则以对存储在另一个对象中的数据集进行排序。
我构建了一个reprex来隔离问题。单击添加按钮后,UI将成功向表中添加行和列。其他行工作正常。但是,新列中的单元格不能更改。您可以输入文本,但不能切换单元格。我仍在学习Shiny的反应性规则,并且怀疑问题在那里。我尝试采用
dynamically add rows to rhandsontable in shiny and R
,但无济于事。
library(shiny)
library(rhandsontable)
library(tidyverse)
ui <- fluidPage(
actionButton("addRow",
"Add"),
numericInput("rows",
"Number of Rows",
value = 0,
min = 0),
numericInput("colAnd",
"Number of And Cols",
value = 0,
min = 0),
numericInput("colBut",
"Number of But Cols",
value = 0,
min = 0),
rHandsontableOutput("hot")
)
server <- function(input, output) {
df <- reactive({
tibble(Topic = "Null",
And = "Null",
But = "Null")
})
df2 <- eventReactive(input$addRow,{
add_row_custom<- function (df, n, add = "null")
{
new <- data.frame(matrix(add, nrow = n, ncol = ncol(df)))
colnames(new) <- colnames(df)
rbind(df, new)
}
final <- hot_to_r(input$hot)
final %>%
add_row_custom(., input$rows ) %>%
cbind(., data.frame(matrix("null",
nrow = nrow(.),
ncol = input$colAnd + input$colBut)
)
)
})
df4 <- reactive({
if(input$addRow == 0){
df()
}else{
df2()}
})
output$hot <- renderRHandsontable(rhandsontable(df4()) %>%
hot_table(highlightRow = T,
highlightCol = T))
}
# Run the application
shinyApp(ui = ui, server = server)
答案 0 :(得分:0)
将脑袋撞了好几个小时之后,我走了30分钟,去了可录音的文档。
长话短说,在rhandsontable函数下添加参数useType = F。