使用 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}
这样你就不会忘记添加它们。
科林
我是 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}
这样你就不会忘记添加它们。
科林