光沢のあるアプリケーションのコードを複数のファイルに分割しようとしましたが、これをShinyで適切に機能させることができません。私の試みは見つけることができます このデモで
コードを複数のファイルに分割しながら、「アプリの実行」ボタンを保持し、RStudioで「コード補完」を元に戻すにはどうすればよいですか?
そうでない場合! ShinyをVisual Studioと統合できますか?
はい、RStudioの他のすべてのプロジェクトと同じように、これを実現するために提供されているRメカニズムを使用することで、非常に簡単に実現できます。
光沢のある関数のコード補完は、library(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
は、引数としていくつかのtabPanelを受け取ります。これらのtabPanelは次のファイル(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ファイルをソースとします。
@Joris Meysの回答には、光沢のあるコードをファイルに分割するトピックが含まれていました。質問の一部はrun app
ボタン。組織が有効な光沢のあるアプリを作成しても使用できない場合があります。
この質問を検索すると、 この問題 を見つけることができます。次に、その問題で行われたコミットに続いて、 run app
ボタン 、および isShinyAppDir
に関するこの関数 、 shinyfiletypeのこの関数 :
基本的に、どのフォルダにもui.R
、server.R
、app.R
、global.R
、www
フォルダーは光沢のあるフォルダーと見なされます(詳細な条件はより複雑です。ソースコードを参照してください)。上記の4つのファイルにはrun app
ボタン。
私が気づいたことの1つは、通常はアプリを実行したままにして、次にいくつかの変更を加えることができるということですreload app
変更を確認しますが、他のファイルを入手した場合はreload app
ボタンは、そのソースファイルの変更を再ロードしません。