簡體   English   中英

DT 表未顯示為閃亮

[英]DT tables not shown in shiny

我有一個閃亮的應用程序,它打開一個簡單的 .bat 文件,該文件在后台執行 R 和腳本 run.r。 DT廣泛使用包DT來呈現所有表格。 我遇到的問題是,如果我從 Rstudio run app 運行 Shiny,它會顯示所有表格,但是如果我使用 .bat 文件執行 Shiny,它就不會顯示主題。 我已經這樣做了 4 次,這是第一次發生,我不知道問題所在。 我有 CRAN 中可用的DT pacakges 的最新版本,

所以我的server.r是:

server <- function(input, output,session) {
  observeEvent(input$run,{

TablasVaR <- function(mat,DT = T){
      mat_tbl <- data.frame(Activos = rownames(mat),Porcentaje = mat[,"Porcentaje"],
                            VaR = mat[,"Nivel"])

      tabla <- datatable(mat_tbl, escape = T,rownames = FALSE, 
                         selection = list(target = 'row'),
                         options = list(dom = 'tip', paging = TRUE))%>%
        formatStyle(1:ncol(mat_tbl),fontSize = '100%')%>%
        formatCurrency(3,digits = 0)%>%
        formatPercentage(2,digits = 1)
      if(DT){
        return(tabla)
      } else{
        return(mat_tbl)
      }

    }

    matr <- data.frame(Porcentaje=rnorm(19),Nivel = rnorm(19))



  output$table <- renderDataTable({TablasVaR(matr)})
  })
  session$onSessionEnded(function() {
    stopApp()
  })  
}

ui.r

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(),
    wellPanel(style = "background-color: #ffffff;",
              bsButton("run","run1",block=F, style="default"),
              fluidRow(column(4,align="center",offset = 4,
                              dataTableOutput("table"))))
  ))

run.r是:

librerias <- c("openxlsx","ggplot2","scales","rugarch","zoo","data.table","stringr",
               "DT","plotly","lubridate","knitr","gridExtra","grid","shinyBS",
               "rmarkdown","nloptr","shiny")
if(length(setdiff(librerias, rownames(installed.packages()))) > 0){
  install.packages(setdiff(librerias, rownames(installed.packages())))
}
invisible(sapply(librerias, require, character.only = TRUE))
CAMINO <<- "D:/Users/aandr/Documents/Ejemplo/"
runApp(CAMINO, launch.browser=TRUE)

.bat 文件包含:

"C:\Program Files\R\R-3.5.1\bin\R.exe" CMD BATCH "run.r"

如果我從run.r運行閃亮的應用程序,則顯示DT ,但如果我從 .bat 文件運行它,則不會。 要使其運行,您需要將 server.r、ui.r、run.r 和 .bat 保存在同一文件夾中。

如果您閱讀了 RStudio 的在 Shiny 中使用 DT的頁面,您可能沒有注意到

請注意,在DT, DTOutput()是一個別名dataTableOutput()renderDT()是一個別名renderDataTable() 建議您使用DTOutput()renderDT()以避免閃亮名稱相同的功能可能的碰撞( shiny::dataTableOutput()shiny::renderDataTable()

碰撞,那是你的問題。 確認一下,如果你看到這個:

find("dataTableOutput")
# [1] "package:DT"    "package:shiny"
find("renderDataTable")
# [1] "package:DT"    "package:shiny"

那么函數名沖突很可能是罪魁禍首。 嘗試用DT::dataTableOutput(...)DTOutput(...)替換你的dataTableOutput(...) DTOutput(...) 並將renderDataTable(...)替換為DT::renderDataTable(...)renderDT(...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM