【发布时间】:2021-10-06 12:30:13
【问题描述】:
在下面的简单 App 代码中,我在 Shiny 模态对话框中生成了一个用户输入表(或矩阵)。单击“修改”操作按钮会拉出一个默认用户输入表,用户可以在其中修改默认值、插入/删除输入列等。“显示”操作按钮在主页上拉出table2,“隐藏”隐藏同一张桌子。 (您可以忽略模态框中出现的table1,它暂时存在用于测试目的,稍后将被删除)。 “重置”按钮将表格恢复为默认表格。
问题是“显示”和“隐藏”只能工作一次。此外,在修改输入表(或矩阵)后,单击“修改”会拉出默认表,而不是最近修改的表。
那么,我将如何修改以下内容,以便(i)单击“显示”和“隐藏”分别重复显示和隐藏最近修改的表格(确定也有一个组合显示/隐藏按钮,使用 shinyjs @ 987654323@ 函数,我玩过的东西),(ii)在第一次调用应用程序时单击“修改”会拉出默认表(如当前所做的那样),但随后单击“修改”会拉出最近修改的表, 以及 (iii) 在没有先修改表格的情况下点击“显示”会拉出默认表格?
MWE 代码:
library(shiny)
library(shinyMatrix)
library(shinyjs)
matrix3Input <- function(x){
matrixInput(x,
label = 'Series terms:',
value = matrix(c(1,24,0,1),4,1,dimnames=list(c("A","B","C","D"),NULL)),
rows = list(extend = FALSE,names = TRUE),
cols = list(extend = TRUE,names = TRUE,editableNames = TRUE,delete = TRUE),
class = "numeric") # close matrix input
} # close function
ui <- fluidPage(
useShinyjs(),
titlePanel("Inputs"),
fluidRow(actionButton("modify","Modify"),
actionButton("show","Show"),
actionButton("hide","Hide"),
actionButton("reset","Reset"),
tableOutput("table2")
) # close fluid row
) # close fluid page
server <- function(input, output, session) {
observeEvent(input$modify,{showModal(modalDialog(
matrix3Input("matrix"),
tableOutput("table1"))
)})
output$table1 <- renderTable(input$matrix, rownames = TRUE)
observeEvent(input$show,{
tableOutput("table2")
output$table2 <- renderTable(input$matrix, rownames = TRUE)
})
observeEvent(input$hide,{hide("table2")})
observeEvent(input$reset,{
tableOutput("table2")
output$table2 <- renderTable(input$matrix, rownames = TRUE)
})
} # close server
shinyApp(ui, server)
【问题讨论】: