Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用基于事件的交互生成DT对象的模块_R_Shiny_Shiny Reactivity - Fatal编程技术网

R 使用基于事件的交互生成DT对象的模块

R 使用基于事件的交互生成DT对象的模块,r,shiny,shiny-reactivity,R,Shiny,Shiny Reactivity,我正在构建一个闪亮的应用程序,它有多个“可编辑”表,用户可以在其中添加新行、编辑现有行,并将这些数据写回数据源 我一直在模块中编写代码,以保持代码分离,因此我有一个用于“用户”的模块,我想让用户表利用“editableDT”模块 基于我有表和添加按钮显示,但似乎观察事件没有触发 该模块需要如何修改,以便内部模块能够观察按钮按下情况 包含代码以便于阅读: editableDT <- function(input , output

我正在构建一个闪亮的应用程序,它有多个“可编辑”表,用户可以在其中添加新行、编辑现有行,并将这些数据写回数据源

我一直在模块中编写代码,以保持代码分离,因此我有一个用于“用户”的模块,我想让用户表利用“editableDT”模块

基于我有表和添加按钮显示,但似乎观察事件没有触发

该模块需要如何修改,以便内部模块能够观察按钮按下情况

包含代码以便于阅读:

editableDT <- function(input
                       , output
                       , session
                       , table) {
  output$table <- DT::renderDataTable(table(),
                                      server = FALSE)

  proxy <- DT::dataTableProxy("table")

  observeEvent(input$add, {
    proxy %>% addRow(table()[1, ])
  })

}

editableDTInput <- function(id) {
  ns <- NS(id)
  tagList(actionButton(ns("add"), "Add Row"))
}

users <- function(input
                  , output
                  , session) {
  users <- reactive({
    iris
  })

  user <- callModule(editableDT, "usertbl", users)
  output$tblui <- renderUI(tagList(editableDTUI(session$ns("usertbl"))))
}

usersUI <- function(id) {
  ns <- NS(id)
  tagList(editableDTInput("usertbl"),
          uiOutput(ns("tblui")))
}

ui <- function() {
  fluidPage(usersUI("sample"))
}

server <- function(input, output, session) {
  callModule(users, "sample")
}

shinyApp(ui, server)

editableDT您没有提供
editableDTUI
。我想是的

editableDTUI <- function(id) {
  ns <- NS(id)
  DTOutput(ns("table"))
}
editableDTUI
usersUI <- function(id) {
  ns <- NS(id)
  tagList(editableDTInput("usertbl"),
          uiOutput(ns("tblui")))
}
usersUI <- function(id) {
  ns <- NS(id)
  tagList(editableDTInput(ns("usertbl")),
          uiOutput(ns("tblui")))
}