R 闪亮仪表板 - 使用 source('file.R')



简介

我创建了一个R闪亮的仪表板应用程序,它很快变得相当复杂。我有超过1300行的代码都放在应用程序中。R和它的工作。我正在使用RStudio。

我的应用程序有一个侧边栏和选项卡,而不是使用模块,我在绘制图形等时动态获取侧边栏和标签ID以生成唯一标识符。

我试图重新组织它,使其更易于管理,并将其拆分为其他程序员的任务,但我遇到了错误。

工作代码

我的原始代码有许多库语句,并将工作目录设置为代码位置。

rm(list = ls())
setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
getwd()

然后,我有一系列位于ui/server函数之外的函数,因此只加载一次(不是被动的(。这些都是从服务器内部通过设置反应值和从renderPlot等内部调用函数来调用的。其中一些是嵌套的,所以服务器中的函数只调用常规应用程序中的函数。R,它又调用另一个。例如

# Start of month calculation
som <- function(x) {
toReturn <- as.Date(format(x, "%Y-%m-01"))
return(toReturn)
}
start_fc <- function(){
fc_start_date <- som(today())
return(fc_start_date)
}

然后在服务器中类似这样的东西(代码不完整(

server <- function(input, output, session) {
RV <- reactiveValues()
observe({
RV$selection <- input[[input$sidebar]]
#  cat("Selected:",RV$selection,"r")
})

.......
cat(paste0("modelType: ",input[[paste0(RV$selection,"-modeltype")]]," n"))
vline1 <- decimal_date(start_pred(input[[paste0(RV$selection,"-modeltype")]],input[[paste0(RV$selection,"-modelrange")]][1]))
vline2 <- decimal_date(start_fc())
.......

问题代码

所以现在,当我把我所有的函数放进不同的.R文件时,我会收到错误,表明函数还没有加载。如果我通过高亮显示源文件并按Alt Enter键运行它们来加载源文件,以便将它们加载到内存中,然后单击运行应用程序,代码就可以工作了。但是,如果我依赖Run App加载这些源文件以及其中的函数,则无法找到这些函数。

source('./functionsGeneral.R')
source('./functionsQuote.R')
source('./functionsNewBusiness.R')
source('./ui.R')
source('./server.R')
shinyApp(ui, server)

其中ui。R是

source('./header.R')
source('./sidebar.R')
source('./body.R')
source('./functionsUI.R')
ui <- dashboardPage( 
header,
sidebar,
body
)

最后是问题

R Shiny Dashboard以何种顺序运行代码。当我将完全相同的内联代码放入另一个文件并用源代码('./functions.R(引用它时,为什么它会失败?它不会在闪亮的应用程序会话期间加载到内存中吗?我错过了什么?

如有任何帮助,我们将不胜感激。

谢谢,Travis

好的,我发现最简单的方法是创建一个名为R的子文件夹,并将预加载代码放入该文件夹中。从闪亮的1.5版本开始,R文件夹中的所有这些代码都会首先自动加载。

相关内容

最新更新