我正在使用我的筆記本電腦和雲設備來處理數據集。我只想在雲上工作時計算一些「計算量大」的代碼塊。有條件地執行代碼段
到目前爲止,我選擇了一個不是很優雅的方式來做到這一點。我已將##OPT##
前綴添加到我只想在雲中執行的部分。然後,我只需刪除這些前綴並在雲中運行腳本。
現在我的問題:有沒有一種方法可以在腳本的開始處選擇是否執行這些段,然後在參數設置爲「false」時跳過這些段?如果條件允許,我嘗試過,但這非常麻煩。
我正在使用我的筆記本電腦和雲設備來處理數據集。我只想在雲上工作時計算一些「計算量大」的代碼塊。有條件地執行代碼段
到目前爲止,我選擇了一個不是很優雅的方式來做到這一點。我已將##OPT##
前綴添加到我只想在雲中執行的部分。然後,我只需刪除這些前綴並在雲中運行腳本。
現在我的問題:有沒有一種方法可以在腳本的開始處選擇是否執行這些段,然後在參數設置爲「false」時跳過這些段?如果條件允許,我嘗試過,但這非常麻煩。
爲了進一步說明docendo discimus的評論,只是在你的腳本的開頭定義參數:
execpart <- TRUE #and change to FALSE if you don't want to execute
然後換你的腳本,只應在situationally執行的整個部分:
if(execpart){
## your script
}
你甚至可以在開始時爲腳本的不同部分定義多個參數。這會讓您選擇通過幾個簡單的更改來設置腳本的執行。
請注意,if
查找TRUE/FALSE
,因此您無需在if
條件中指定(execpart == TRUE)
條件。
這個問題說明他們已經嘗試過if語句,並發現它們非常繁瑣。我假設他們正在尋找替代解決方案。不過,我同意這可能是最簡單的方法。 – Eumenedies
是的,我認爲他們以某種方式過度複雜的方式使用了'if',因爲這種解決方案既不花費太多時間也不需要很多代碼。 – LAP
我還是R的初學者,並且在每行代碼中添加了'if'條件。這個版本與'if(){}'是完美的,正是我想要的! – deca
如果您在RStudio中使用R筆記本,則可以在文檔中的不同代碼塊中包含不同的代碼。代碼塊的定義如下:
```{r}
"hello world!"
```
這樣做可以讓您非常輕鬆地只運行要運行的塊。另外,如果你想運行所有的塊,你可以這樣做。
任何給定的塊都擁有一個名爲eval
的選項,它決定了它們是否應該運行。這可以從表達式取一個值,所以你基本上可以這樣做:
```{r label}
is_cloud <- FALSE #or TRUE
```
```{r conditional, eval = is_cloud}
"hello world!"
```
且僅當is_cloud
是TRUE
塊將被執行。
你可以使用簡單的'if'語句,在你的腳本開始處設置爲TRUE/FALSE,即'in_cloud < - TRUE',然後'if(in_cloud){...}' –
或者你可以創建兩個獨立的腳本:local.R&cloud.R,並找到合適的腳本。 – Prometheus
假設你的筆記本電腦是Windows,我們可以這樣做:'if(Sys.info()[「sysname」]!=「Windows」){...一些heave代碼...} – zx8754