ifelse(X,Y,Z)
若X成立,则执行Y,否则执行Z
if(cond) expr
if(cond) cons.expr else alt.expr
for(var in seq) expr
while(cond) expr
repeat expr
在三种循环中可以用break和next
for(i in 1:length(x)) 循环
有时可避免使用循环,方法:
1.向量化:R语言的大部分操作可直接作用于向量,效率很高
2.用多种apply函数,如apply(X,MARGIN,FUN,...),
其中:
X:一个矩阵
MARGIN:对行(MARGIN为1)还是对列(MARGIN为2),或者同时对行和列(MARGIN为c(1,2))
FUN:一个函数(或操作符,需用引号限定)
switch(EXPR,...)
其中:
EXPR:可以为一个number或字符串
...:the list of alternatives
若EXPR为字符串,则该list必须具有名字,每个list项为name_i=expr_i,当EXPR与某个name_i严格匹配时,expr_i为结果;当expr_i为空时,类似于多个case分支共用一个值。
若EXPR不为字符串,则强制转换为integer,后面的list按EXPR取值从1开始对应计算,并作为该函数的结果。
例子:
(1)for(i in c(-1:3,0)) print(switch(i,1,2,3,4))
结果为
NULL
NULL
[1] 1
[1] 2
[1] 3
NULL
(2)switch("cc",a=1,cc=,cd=,d=2)
结果为
2