R语言的流程控制

来源:互联网 发布:远行星号舰船数据 编辑:程序博客网 时间:2024/05/16 13:38

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

 

 

原创粉丝点击