源功能不起作用 - Shiny Dashboard

Posted

技术标签:

【中文标题】源功能不起作用 - Shiny Dashboard【英文标题】:Source function does not work - Shiny Dashboard 【发布时间】:2021-03-30 23:41:05 【问题描述】:

我正在尝试在不同的脚本中创建我的 DashboardBody(),但它给了我一个错误。我已在 Dashboard_body.R 脚本中保存了与仪表板正文相关的所有工作,并在我的主应用程序中调用此脚本

library(shiny)
library(shinydashboard)

ui <- dashboardPage(
  dashboardHeader(title = "Dashboard Basic"),
  
  dashboardSidebar(),
  
  source("Dashboard_body.R", local = TRUE)
)

server <- function(input, output) 
  set.seed(122)
  histdata <- rnorm(500)
  
  output$plot1 <- renderPlot(
    data <- histdata[seq_len(input$slider)]
    hist(data)
  )


shinyApp(ui, server)
dashboardBody(
  # Boxes need to be put in a row (or column)
  fluidRow(
    box(plotOutput("plot1", height = 250)),
    
    box(
      title = "Controls",
      sliderInput("slider", "Number of observations:", 1, 100, 50)
    )
  )
)

Error in tagAssert(body, type = "div", class = "content-wrapper") : 
  Expected an object with class 'shiny.tag'.

【问题讨论】:

【参考方案1】:

source() 函数将返回一个列表,其中包含最后一个值以及是否可见。要访问该值,您可以这样做

ui <- dashboardPage(
  dashboardHeader(title = "Dashboard Basic"),
  dashboardSidebar(),
  source("Dashboard_body.R", local = TRUE)$value
)

但实际上,如果您正在采购文件,最好在其中保留适当的功能。这使得它更容易重复使用。

所以有类似的东西

get_body <- function() 
  dashboardBody(
    # Boxes need to be put in a row (or column)
    fluidRow(
      box(plotOutput("plot1", height = 250)),
      box(
        title = "Controls",
        sliderInput("slider", "Number of observations:", 1, 100, 50)
      )
    )
  )

然后您将在创建 UI 并调用您的函数之前进行源代码

source("Dashboard_body.R")
ui <- dashboardPage(
  dashboardHeader(title = "Dashboard Basic"),
  dashboardSidebar(),
  get_body()
)

【讨论】:

有效!非常感谢您的帮助和提示!

以上是关于源功能不起作用 - Shiny Dashboard的主要内容,如果未能解决你的问题,请参考以下文章

R/Shiny 的 SelectInput "Selected" 不起作用

JavaScript 函数在 shiny.semantic 模块中不起作用(但没有错误)

Shiny:Shiny Dashboard (sidebarMenu) 中的 renderMenu 和 observeEvent 冲突

为啥 `R` 管道运算符 `|>` 在使用 Shiny 的反应式编程中不起作用?

导航栏按钮在 Shiny 中单击时不起作用

R Shiny SelectizeInput:从分组选择中传递值不起作用