r - 函数未在 Shiny 应用程序上返回结果

我在下面写了这个函数:

leg.rpps = function(es, municipio) {
    est = as.character(es)
    mun = as.character(municipio)
    url = paste0("https://apicadprev.economia.gov.br/RPPS_REGIME_PREVIDENCIARIO?sg_uf=", 
                     est, "&no_ente=", curlEscape(mun), "&")
    tmp = tempfile()
    hdl = curl::new_handle(ssl_verifypeer = 0)
    curl::curl_download(url, destfile = tmp, handle = hdl)
    tpdt = fromJSON(tmp)
    dt1 = (tpdt$results)
    dt2 = dt1$data
    dt.real = dt2[[1]]
    rm(tpdt, tmp, dt1, dt2)
    dados = cbind(dt.real$sg_uf, dt.real$no_ente, dt.real$no_tipo_legislacao, 
                      dt.real$nr_legislacao, dt.real$dt_legislacao, dt.real$te_ementa)
        colnames(dados) = c("UF", "Ente", "Tipo Legal", "No. Dispositivo", 
                            "Data Publicação", "Ementa")
        return(datatable(dados))
}

它本身可以正常工作,产生预期的结果。但是当我尝试构建一个 shiny 应用程序并调用它时,我根本没有得到任何结果。 shiny 页面只是在数据 table 应该出现的地方保持空白。下面是我的应用程序的代码(我必须说我是 shiny 的初学者,所以我可能会编写一些与 shiny 相关的代码)

library(shiny)
library(DT)
library(curl)
library(jsonlite)
library(RCurl)

ui <- fluidPage(
    titlePanel("Legislação RPPS por Ente"),
  sidebarLayout(
    sidebarPanel(
      textInput(inputId = "estado",
                label = "Estado - Sigla:",
                value = ""),
      textInput(inputId = "municipio",
                label = "Município:",
                value = ""),
      actionButton(
        inputId = "click_go", 
        label = "Ir")
),
    mainPanel(
      h1("Legislação RPPS"),
      h4("Utilizar sigla do Estado (Em maiúscula) e Nome do Município com as 
         iniciais em Maiúscula"),
      dataTableOutput("tabela")
    )
  )
)

server <- function(input, output) {

  leg.rpps = function(es, municipio){
    url = paste0("https://apicadprev.economia.gov.br/RPPS_REGIME_PREVIDENCIARIO?sg_uf=", 
                 es, "&no_ente=", curlEscape(municipio), "&")
    tmp = tempfile()
    hdl = curl::new_handle(ssl_verifypeer = 0)
    curl::curl_download(url, destfile = tmp, handle = hdl)
    tpdt = fromJSON(tmp)
    dt1 = (tpdt$results)
    dt2 = dt1$data
    dt.real = dt2[[1]]
    rm(tpdt, tmp, dt1, dt2)
    dados = cbind(dt.real$sg_uf, dt.real$no_ente, dt.real$no_tipo_legislacao, 
                  dt.real$nr_legislacao, dt.real$dt_legislacao, dt.real$te_ementa)
    #colnames(dados) = c("UF", "Ente", "Tipo Legal", "No. Dispositivo", 
     #                   "Data Publicação", "Ementa")
    #return(datatable(dados))
    datatable(dados)
  }
  current_data = eventReactive(
    input$click_go,
    leg.rpps(input$estado, input$municipio)
  )
  
  output$tabela <- renderDataTable({
    req(input$click_go)
    current_data()
  })
}
shinyApp(ui, server)

我很难弄清楚这可能有什么问题。如果有人能指出我的出路,我将不胜感激。

回答1

显然,我在另一个数据表上调用了一个数据表。

当我在 leg.rpps() 结果上将 datatable(dados) 更改为 dados 时,它起作用了。

相似文章

graphql - PokeApi GraphQL 限制精灵

我正在尝试在此处使用PokeApigraphQL控制台https://beta.pokeapi.co/graphql/console/来获取具有类型和精灵的口袋妖怪,我已经很容易找出类型,但我似乎无法...

最新文章