shinydashboard ui.R 和 server.R 未读取 Global.R
Posted
技术标签:
【中文标题】shinydashboard ui.R 和 server.R 未读取 Global.R【英文标题】:shinydashboard ui.R and server.R not reading Global.R 【发布时间】:2017-02-01 16:42:17 【问题描述】:在 RStudio 中开发时,我成功地使用 global.R 将数据传递给 ui.r 和 server.R。但是,当我将代码迁移到服务器时,ui.R 和 server.R 都无法读取 global.R。我正在使用 Shiny Server(不是专业版)。这可能是什么原因造成的?
我的代码看起来像这样(它不是反应式的)
#global.R
x = 10
#ui.R
print(x)
> 10 #in RStudio viewer
> Error: object 'x' not found #on Shiny Server
根据下面 sigmabeta 的回答,我对 server.R
和 global.R
进行了更改,但是我正在寻找服务器将 x 重置为另一个值,以便 ui.R
可以读取它。这就是我现在的代码
#global.R
x = 10
get_x_value <- function (n)
x = n+1
return x
#server.R
source("./global.R")
shinyServer(function(input, output)
values <- reactiveValues()
observe (
values$x <- get_x_value(5)
)
)
#ui.R
print(x)
> 6 #in RStudio viewer
> 10 #on Shiny Server
这是ui.R
中的实际代码,我试图根据server.R
中已经计算的值来设置框的状态
library(shinydashboard)
dashboardPage(
Header = dashboardHeader(title = 'Test'),
Sidebar = dashboardSidebar
(
sidebarMenu
(
menuItem("ABC", tabName = "ABC")
)
),
Body = dashboardBody
(tabItems
(
tabItem(
tabName = "ABC",
fluidRow
(
box
(
status = if (x==6) "info" else "danger" ,
solidHeader = TRUE
)
)
)
)
)
)
【问题讨论】:
【参考方案1】:您似乎没有提到您的闪亮应用程序必须从 global.R 获取值(和/或)函数
您可以在 server.R 文件中执行此操作。 server.R 示例代码:
library(shiny)
source("./global.R")
shinyServer(function(input, output)
values <- reactiveValues()
observe (
values$x <- get_x_value()
)
output$text1 <- renderText(
values$x
)
)
然后在 global.R 中,您将拥有函数 get_x_value
,如下所示:
get_x_value <- function ()
x = 10
return x
x 也可以在外面定义,如果有的话,你可能想在函数中做一些额外的处理,或者编写更复杂的函数。
更新: 添加ui.R的代码
shinyUI(fluidPage(
mainPanel(
htmlOutput(
textOutput("text1")
)
))
【讨论】:
谢谢。这有帮助。但是,使用此解决方案,我无法从 server.R 更新 global.R 中的任何变量 你需要使用响应式值。我将编辑我的答案以解释您如何反应地做到这一点 我仍然无法从服务器更新 x。我编辑了我的问题以显示我在寻找什么。 This article 实际上恰恰相反:不需要需要采购。也许是否需要 source("global.R") 从一个版本的 Shiny 更改为另一个版本? 您不需要来源global.R
,它只需要与server.R
和ui.R
在同一目录中即可。注意shinyApp
调用不能将global.R
和app.R
编织在一起;但是,这是通过 shinyAppDir 自动完成的。参见。 ?shinyApp
和 ***.com/questions/54914541/global-r-dont-start/…以上是关于shinydashboard ui.R 和 server.R 未读取 Global.R的主要内容,如果未能解决你的问题,请参考以下文章
shinydashboard ui.R 和 server.R 未读取 Global.R