DT 表未以闪亮方式显示

Ale*_*ade 4 r shiny dt

我有一个闪亮的应用程序,它打开一个简单的 .bat 文件,该文件在后台执行 R 和脚本 run.r。闪亮的DT广泛使用该包来渲染所有表格。我遇到的问题是,如果我从 Rstudio 运行应用程序运行闪亮,它会显示所有表格,但如果我使用 .bat 文件执行闪亮,它只是不显示主题。我已经这样做了四次了,这是第一次发生,我不知道问题所在。DT我有CRAN 中可用的最新版本的软件包,

所以我的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()
  })  
}
Run Code Online (Sandbox Code Playgroud)

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 Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

.bat 文件包含:

"C:\Program Files\R\R-3.5.1\bin\R.exe" CMD BATCH "run.r"
Run Code Online (Sandbox Code Playgroud)

run.r如果我从显示运行闪亮的应用程序DT,但如果我从 .bat 文件运行它,它就不会。要使其运行,您需要将 server.r、ui.r、run.r 和 .bat 保存在同一文件夹中。

r2e*_*ans 7

如果您阅读了 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"
Run Code Online (Sandbox Code Playgroud)

那么函数名冲突很可能是罪魁祸首。尝试将您的替换dataTableOutput(...)DT::dataTableOutput(...)DTOutput(...); 并替换renderDataTable(...)DT::renderDataTable(...)renderDT(...)