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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。