我成功使用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.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
)
)
)
)
)
)
答案 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")
)
))