2016-01-27 32 views
4

我對Shiny(以及R)的相當新穎,但我設法啓動並運行了一個應用程序。R發光的執行命令

不過,我很困惑有關,發生在RStudio實際運行兩個腳本server.Rui.R

使我想起了「執行順序」有代碼4個部分( 2 server.R腳本和2 ui.R腳本):

server.R:

###### SECTION 1 

shinyServer(function(input, output, session) { 


    ###### SECTION 2 


}) 

ui.R:

###### SECTION 1 

shinyUI(fluidPage(

    ###### SECTION 2 

) 
) 

我的問題是,假設我有上述正確的,哪些部分是第一次運行,第二,第三等?

+1

您可以在一個名爲'global.R'文件中定義的全局變量。 – nicola

+0

請注意,與您相關的不是編譯順序(無論如何,它在R中都是不明確的),而是執行順序*。 –

+1

只是爲了擴展我的評論:'server.R'和'ui.R'的內容在不同的環境中被解析和評估,並且不會彼此交談(不管執行順序如何)。你可以通過在其中一個對象中定義一個對象來證明這一點,並看看你是否可以從另一個對象(你不能)抓住它。通用對象可以在'global.R'文件中定義。在那裏定義的對象可以用在'server.R'和'ui.R'中。 – nicola

回答

7

在每個部分中添加print語句並從RStudio運行。該消息顯示在您的控制檯中。我得到

[1] "section 1 of UI" 
[1] "section 2 of UI" 
[1] "section 1 of server" 
[1] "section 2 of server" 

至於對象訪問,我嘗試了下面,並看到在每個環境中的變量。

ui.R

VarDefinedInSec1UI <- 1 

print("* section 1 of UI") 
cat(ls(), "\n\n") 

shinyUI(fluidPage(
    VarDefinedInSec2UI <- 2, 

    print("* section 2 of UI"), 
    cat(ls(), "\n\n") 
)) 

server.R

VarDefinedInSec1Server <- 3 

print("* section 1 of server") 
cat(ls(), "\n\n") 

shinyServer(function(input, output, session) { 
    VarDefinedInSec2Server <- 4 

    print("* section 2 of server") 
    cat(ls(), "\n\n") 
}) 

我:

[1] "* section 1 of UI" 
VarDefinedInSec1UI 

[1] "* section 2 of UI" 
VarDefinedInSec1UI VarDefinedInSec2UI 

[1] "* section 1 of server" 
VarDefinedInSec1Server 

[1] "* section 2 of server" 
input output session VarDefinedInSec2Server 
+0

純粹的邏輯與一絲優雅,謝謝! – gmarais