Control
位於 base
包(package)。 說明
這些是基本的 control-flow 結構R語言。它們的函數與任何 Algol-like 語言中的控製語句大致相同。他們都是預訂的字。
用法
if(cond) expr
if(cond) cons.expr else alt.expr
for(var in seq) expr
while(cond) expr
repeat expr
break
next
參數
cond |
不是 |
var |
變量的語法名稱。 |
seq |
計算結果為向量(包括列表和 expression )或 pairlist 或 |
expr , cons.expr , alt.expr |
正式意義上的表達。這可以是簡單表達式,也可以是所謂的複合表達式,通常采用 |
細節
break
跳出 for
、 while
或 repeat
循環;控製權轉移到最內層循環之外的第一條語句。 next
停止當前迭代的處理並推進循環索引。 break
和next
均僅適用於最內層的嵌套循環。
請注意,忘記在語句周圍放置大括號 ( { .. }
) 是一個常見的錯誤,例如在 if(..)
或 for(....)
之後。特別是, }
和 else
之間不應有換行符,以避免在鍵盤或通過 source
輸入 if ... else
構造時出現語法錯誤。因此,防禦性編程的一種(有點極端)態度是始終使用大括號,例如,對於 if
子句。
for
循環中的 seq
在循環開始時計算;隨後更改它不會影響循環。如果seq
的長度為零,則跳過循環體。否則,變量 var
依次分配 seq
的每個元素的值。您可以在循環體內分配給var
,但這不會影響下一次迭代。當循環終止時,var
仍保留為包含其最新值的變量。
值
if
返回所計算表達式的值,如果沒有,則 NULL
不可見(如果沒有 else
則可能會發生這種情況)。
for
、while
和 repeat
不可見地返回 NULL
。 for
將 var
設置為 seq
最後使用的元素,如果長度為零,則設置為 NULL
。
break
和next
在循環內轉移控製時不返回值。
例子
for(i in 1:5) print(1:i)
for(n in c(2,5,10,20,50)) {
x <- stats::rnorm(n)
cat(n, ": ", sum(x^2), "\n", sep = "")
}
f <- factor(sample(letters[1:5], 10, replace = TRUE))
for(i in unique(f)) print(i)
參考
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
也可以看看
相關用法
- R Constants 內置常量
- R Colon 冒號運算符
- R Comparison 關係運算符
- R CallExternal C/C++ 代碼的現代接口
- R Cstack_info 報告有關 C 堆棧大小和使用情況的信息
- R file.path 構造文件路徑
- R grep 模式匹配和替換
- R getwd 獲取或設置工作目錄
- R vector 向量 - 創建、強製等
- R lapply 對列表或向量應用函數
- R dump R 對象的文本表示
- R Sys.getenv 獲取環境變量
- R rank 樣本排名
- R getDLLRegisteredRoutines DLL 中 C/Fortran 例程的反射信息
- R pushBack 將文本推回連接
- R strsplit 分割字符向量的元素
- R seq.Date 生成規則的日期序列
- R invisible 將打印模式更改為不可見
- R noquote “無引號”字符串打印類
- R warning 警告信息
- R rapply 遞歸地將函數應用於列表
- R basename 操作文件路徑
- R with 評估數據環境中的表達式
- R formals 訪問和操縱形式參數
- R icuSetCollate 按 ICU 設置整理
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Control Flow。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。