shinydashboard ui.R和server.R不读Global.R

时间:2016-09-23 18:20:50

标签: shiny shiny-server shinydashboard

我成功使用global.R在RStudio中进行开发时将数据传递给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.Rglobal.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 个答案:

答案 0 :(得分:2)

您似乎没有引用您的闪亮应用,它必须从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")
    )
))