Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息,并通过editing this post阐明问题。
3年前关闭。
Improve this question
我试图将代码拆分成一个 Shiny 的应用程序,并将其拆分到不同的文件中,但是无法使其在Shiny中正常工作。我的尝试可以找到in this demo
如何在不同的文件中拆分代码,但仍保留“运行应用程序按钮”,并在RStudio中恢复“代码完成”功能?
如果不 !我可以将Shiny与Visual Studio集成吗? 在单独的文件中定义函数和/或对象。 在主文件中使用source()加载其定义
仅当使用
标准示例
一个例子 :
在文件 app.R 中,您将:
该代码除了启动对象
文件 myUI.R 包含
该文件定义了app.R中使用的
文件 Tabs.R 包含:
此文件创建要添加到tabsetPanel的tabPanel对象。在我自己的代码中,我将每个tabPanel定义存储在单独的文件中。
文件 myServer.R 包含:
并且,如果需要,您可以再次创建具有可在服务器功能内使用的功能的单独文件。但是,您始终必须遵循经典的R逻辑:将事物分配给一个对象,并在您要插入该对象的位置引用该对象。
您也可以直接在
使用模块
如果您想保留一个缺口并重用某些逻辑和布局(例如,应该附加到某些绘图的绘图选项控制面板),则应转到模块。 (另请参阅http://shiny.rstudio.com/articles/modules.html)
模块可以再次存储在单独的文件中,并且该文件来源于 app.R 文件。
想改善这个问题吗?添加详细信息,并通过editing this post阐明问题。
3年前关闭。
Improve this question
我试图将代码拆分成一个 Shiny 的应用程序,并将其拆分到不同的文件中,但是无法使其在Shiny中正常工作。我的尝试可以找到in this demo
如何在不同的文件中拆分代码,但仍保留“运行应用程序按钮”,并在RStudio中恢复“代码完成”功能?
如果不 !我可以将Shiny与Visual Studio集成吗?
最佳答案
是的,您可以使用与RStudio中其他所有项目相同的方式非常轻松地实现这一目标:通过使用提供的R机制来实现这一目标:
仅当使用
library(shiny)
加载 Shiny 包时, Shiny 功能的代码完成才会在RStudio中发生。对于应用程序中的主文件,“运行应用程序”按钮将可见。在下面的示例中,该文件将是 app.R 文件。因此,如果要在RStudio中运行应用程序,则始终必须返回到主文件。标准示例
一个例子 :
在文件 app.R 中,您将:
library(shiny)
source('myUI.R', local = TRUE)
source('myServer.R')
shinyApp(
ui = myUI,
server = myserver
)
该代码除了启动对象
myUI
和myserver
并调用该应用程序外,不会执行其他任何操作。文件 myUI.R 包含
source('Tabs.R')
myUI <- shinyUI({
fluidPage(
tabsetPanel(
Tab1,
Tab2
)
)
})
该文件定义了app.R中使用的
UI
对象。函数tabsetPanel
使用许多tabPanels作为参数。这些tabPanels是在以下文件(Tabs.R)中创建的,因此在构造UI
之前必须先找到其中一个。文件 Tabs.R 包含:
Tab1 <- tabPanel("First Tab",
selectInput("select",
"Choose one",
choices = letters[1:3],
selected = 'a'))
Tab2 <- tabPanel("Second Tab",
textOutput('mychoice'))
此文件创建要添加到tabsetPanel的tabPanel对象。在我自己的代码中,我将每个tabPanel定义存储在单独的文件中。
文件 myServer.R 包含:
myserver <- function(input,output,session){
output$mychoice <- renderText(
input$select
)
}
并且,如果需要,您可以再次创建具有可在服务器功能内使用的功能的单独文件。但是,您始终必须遵循经典的R逻辑:将事物分配给一个对象,并在您要插入该对象的位置引用该对象。
您也可以直接在
server()
函数内部获取源代码。在这种情况下,您应该使用source(..., local = TRUE)
从本地获取资源,因此创建的对象包含在server
函数内部。另请参阅:https://shiny.rstudio.com/articles/scoping.html使用模块
如果您想保留一个缺口并重用某些逻辑和布局(例如,应该附加到某些绘图的绘图选项控制面板),则应转到模块。 (另请参阅http://shiny.rstudio.com/articles/modules.html)
模块可以再次存储在单独的文件中,并且该文件来源于 app.R 文件。