源功能不起作用 - 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 冲突