r语言 - 如何在RStudio项目创建期间从模板运行Shiny应用程序?



我正在创建一个自定义的RStudio项目模板,详见这里。

我有一切工作来创建一个新项目,我也有闪亮的应用程序自己工作。

但是,我现在想在上面网页中同步运行相当于我的hello_world()函数的应用程序。

我可以在我的Shiny应用程序周围编写包装器函数,这些函数可以在通过RStudio菜单从模板创建新项目的上下文中按预期工作,但是在创建新项目的上下文中,好像运行应用程序的行不存在,因为没有应用程序出现,并且没有消息,警告或错误发出。

# function works as expected outside context of creating a new project
run_app <- function() {
ui <- shiny::fluidPage(shiny::titlePanel("New Project"))
server <- function(input, output, session) {
session$onSessionEnded(function() {
shiny::stopApp()
})
}
shiny::shinyApp(ui = ui, server = server,
options = list(launch.browser = TRUE))
}
# but nothing Shiny related happens if called within the new project creation function
# the new project creation process continues as if the call to start the app is not present
hello_world <- function(path, ...) {
run_app()
}

是否有可能在项目创建期间运行一个闪亮的应用程序?

?shiny::shinyApp

通常在R控制台中使用此函数时,Shiny app对象会自动传递给print()函数,该函数将运行应用程序。如果在函数中间调用此函数,则不会将值传递给print(),应用程序也不会运行。要使应用程序运行,将应用程序对象传递给print()或runApp()。

应用程序在其自包含的函数中正确运行,因为返回值是不可见地传递给print的,但当函数包含额外的代码时,就不会发生这种情况。

因此,一个解决方案是将函数调用封装在print()中。

hello_world <- function(path, ...) {
print(run_app())
}

相关内容

最新更新