shinydashboard ui.R和server.R未读取全局.R

shinydashboard ui.R和server.R未读取全局.R,shiny,shiny-server,shinydashboard,Shiny,Shiny Server,Shinydashboard,在RStudio中开发时,我成功地使用global.R将数据传递给ui.R和server.R。然而,当我将代码迁移到服务器时,ui.R和server.R都不能读取global.R。我使用的是闪亮服务器(不是专业版)。这可能是什么原因造成的 我的代码看起来像这样(它不是被动的) 根据sigmabeta下面的回答,我对server.R和global.R进行了更改,但是我希望服务器将x重置为另一个值,以便ui.R可以读取。这就是我现在的代码 #global.R x = 10 get_x_value &

在RStudio中开发时,我成功地使用global.R将数据传递给ui.R和server.R。然而,当我将代码迁移到服务器时,ui.R和server.R都不能读取global.R。我使用的是闪亮服务器(不是专业版)。这可能是什么原因造成的

我的代码看起来像这样(它不是被动的)

根据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

您似乎没有提到您的闪亮应用程序必须从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
})

})
x也可以在外部定义,如果函数中有额外的处理,您可能需要做一些额外的处理,或者编写更复杂的函数

更新: 添加ui.R的代码

shinyUI(fluidPage(
mainPanel(
    htmlOutput(
        textOutput("text1")
    )
))

非常感谢。这很有帮助。但是,使用此解决方案,我无法从服务器更新global.R中的任何变量。那么,您需要使用被动值。我将编辑我的答案,以解释您如何反应性地执行此操作。我仍然无法从服务器更新x。我编辑了我的问题以显示我在寻找什么。实际上恰恰相反:不需要采购。也许源代码(“global.R”)是否需要从一个版本更改为另一个版本?您不需要源代码
global.R
,它只需要与
server.R
ui.R
位于同一目录中。请注意,
shinyApp
调用不能将
global.R
app.R
编织在一起;但是,这是通过shinyAppDir自动完成的。。参见shinyApp和
library(shiny)

source("./global.R")

shinyServer(function(input, output) {
values <- reactiveValues()
observe ({
    values$x <- get_x_value()
})
output$text1 <- renderText({
   values$x
})

})
get_x_value <- function () {
    x = 10
    return x
}
shinyUI(fluidPage(
mainPanel(
    htmlOutput(
        textOutput("text1")
    )
))