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