将renderUI从闪亮模块传递到下一个模块

将renderUI从闪亮模块传递到下一个模块,r,shiny,module,R,Shiny,Module,我正在创建一个应用程序来跟踪游戏数据并免费分发,因为似乎需要阅读:想要这样的东西。该应用程序接受关于应该有多少玩家的初始输入,然后反应性地允许每个玩家的数据输入。然后,我想将接收到的所有数据显示为数据表,可以在下一页下载 我最近开始模块化我的应用程序,以保持整洁。但是,由于某种原因,我不能让这个工作。我认为这是因为我试图将renderUI输入从一个模块传递到下一个模块,但显然不知道如何做到这一点 我收到的错误是: Error in module(childScope$input, childSc

我正在创建一个应用程序来跟踪游戏数据并免费分发,因为似乎需要阅读:想要这样的东西。该应用程序接受关于应该有多少玩家的初始输入,然后反应性地允许每个玩家的数据输入。然后,我想将接收到的所有数据显示为数据表,可以在下一页下载

我最近开始模块化我的应用程序,以保持整洁。但是,由于某种原因,我不能让这个工作。我认为这是因为我试图将renderUI输入从一个模块传递到下一个模块,但显然不知道如何做到这一点

我收到的错误是:

Error in module(childScope$input, childScope$output, childScope, ...) : 
  object 'player_id' not found
尽管如此,我还是收到了许多不同的邮件,试图解决这个问题

为了记录在案,我已签出:

以及:

似乎很接近

下面是一个非常简单的示例,其中包含应用程序中的模块

library(shiny)

######################## -- Data Input Module -- ######################## 
datatrackingUI <- function(id){
  ns <- NS(id)
  fluidPage(
    column(4, offset = 4,
           sliderInput(inputId = ns("players"),
                       label = "How many players do you have?",
                       min = 0,
                       max = 4,
                       value = 4)),
    column(12,
           uiOutput(ns("ui_reactive"))
    )
  )

}

datatracking <- function(input, output, session){
  ns <- session$ns

  output$ui_reactive <- renderUI({
    lapply(seq_len(input$players), function(i){
      column(4,
             wellPanel(
               textInput(inputId = ns("player_id"),
                         label = paste0("Enter the ID for player ", i),
                         placeholder = "Brennan")))})

  })

  df_list <- list(player_id = player_id)
  return(df_list)

}

######################## -- Create Data Table Module -- ######################## 
createTableUI <- function(id){
  ns <- NS(id)

  fluidPage(
    renderUI("some_text_for_now")
  )
}

createTable <- function(input, output, sesssion, df_list){
  ns <- session$ns
  output$some_text_for_now <- renderText({
    print(df_list$player_id())
  })

}



######################## -- Shiny App -- ######################## 
ui <- fluidPage(
  navbarPage("Game",
             tabPanel("Input",
                      hr(),
                      datatrackingUI("create_data")),
             tabPanel("Table",
                      hr(),
                      createTableUI("create_table"))
  )
)

server <- function(input, output, session) {
   df_list <- callModule(datatracking, "create_data")
   callModule(createTable, "create_table", df_list)
}

shinyApp(ui = ui, server = server)
所以,现在,我只是想告诉自己我有renderUI函数的输出。一旦我可以访问输入,我就可以创建数据表/推送到AWS

感谢您的帮助!或者,如果你愿意和我一起做这个项目,可能会很有趣!更多信息,请留言给我


-Brennan

代码中有两个简单的问题:

在模块datatracking中定义df_列表时,不使用输入,因此没有反应。相反,您应该:
谢谢你的回复!尽管如此,当我在inputText中放置id值时,它仍然不会在表格页面上打印任何内容?好的。。。我已经把它固定在原稿上了。所以,一切都很好!当我发布这个的时候,我一定已经看了很久了!!谢谢你仔细的观察和良好的捕捉。
 df_list <- list(
    player_id = reactive(input$player_id)
  )
library(shiny)

######################## -- Data Input Module -- ######################## 
datatrackingUI <- function(id){
  ns <- NS(id)
  fluidPage(
    column(4, offset = 4,
           sliderInput(inputId = ns("players"),
                       label = "How many players do you have?",
                       min = 0,
                       max = 4,
                       value = 4)),
    column(12,
           uiOutput(ns("ui_reactive"))
    )
  )

}

datatracking <- function(input, output, session){
  ns <- session$ns

  output$ui_reactive <- renderUI({
    lapply(seq_len(input$players), function(i){
      column(4,
             wellPanel(
               textInput(inputId = ns("player_id"),
                         label = paste0("Enter the ID for player ", i),
                         placeholder = "Brennan")))})

  })

  df_list <- list(
    player_id = reactive(input$player_id)
  )
  return(df_list)

}

######################## -- Create Data Table Module -- ######################## 
createTableUI <- function(id){
  ns <- NS(id)

  fluidPage(
    renderUI("some_text_for_now")
  )
}

createTable <- function(input, output, session, df_list){
  ns <- session$ns
  output$some_text_for_now <- renderText({
    print(df_list$player_id())
  })

}



######################## -- Shiny App -- ######################## 
ui <- fluidPage(
  navbarPage("Game",
             tabPanel("Input",
                      hr(),
                      datatrackingUI("create_data")),
             tabPanel("Table",
                      hr(),
                      createTableUI("create_table"))
  )
)

server <- function(input, output, session) {
  df_list <- callModule(datatracking, "create_data")
  callModule(createTable, "create_table", df_list = df_list)
}

shinyApp(ui = ui, server = server)