使用 observeEvent 在 golem 应用程序中呈现 table

Using observeEvent to render a table in golem app

我是 golem 包的新手,新手让我在基本的 shiny 操作上苦苦挣扎。此时我无法根据操作按钮触发的 observeEvent 呈现 table。 当提供 link 到 google 学者页面时,该模块应该 抓取 任何研究人员的合著者。单击按钮时没有任何反应。你能帮我弄清楚我做错了什么吗?


#' seleciona_autores UI Function
#'
#' @description A shiny Module.
#'
#' @param id,input,output,session Internal parameters for {shiny}.
#'
#' @noRd 
#'
#' @importFrom shiny NS tagList 
mod_seleciona_autores_ui <- function(id){
  ns <- NS(id)
  tagList(
    shiny::textInput(
      'link',
      label = 'Link para o google scholar',
      value = ''
    ),
    shiny::actionButton(
      'pesquisar_autores',
      'Pesquisar autores!'
    ),
    tableOutput(ns('lista_parceiros'))
 
  )
}
    
#' seleciona_autores Server Functions
#'
#' @noRd 
mod_seleciona_autores_server <- function(id){
  moduleServer( id, function(input, output, session){
    ns <- session$ns
    
    observeEvent(input$pesquisar_autores, {
      forecasts <- rvest::read_html(input$link) %>%
        rvest::html_nodes(".gsc_a_tr") %>%
        rvest::html_nodes(".gsc_a_t") %>%
        rvest::html_element("div") %>%
        rvest::html_text()
      
      
      
      parceiros <- data.frame(table(trimws(unlist(strsplit(forecasts, ",")))))
      
      parceiros <- parceiros[parceiros$Var1 != '...',]
      
      parceiros <- parceiros[order(parceiros$Freq, decreasing = TRUE),]
      
      colnames(parceiros) <- c('Autor', 'Quantidade de trabalhos')
      
      output$lista_parceiros <- renderTable({
        parceiros
      })
    })
 
  })
}

正如 YBS 所说,它缺少 ns()。 这是“我的模块不显示”的第一个答案:)

FWIW 我们正在研究如何在内部检查这个 {golem} 这样你就不会忘记添加它们。

科林