美文网首页R语言R
R语言系列之2-----流程控制

R语言系列之2-----流程控制

作者: gtt儿_生物信息学习 | 来源:发表于2018-11-22 14:55 被阅读6次

R 是一种表达式语言(expression language)因为它仅有的命令形式就是返回结果的函数和表达式。赋值操作实际上也是一个表达式结果的再分配,并且可以用在任何表达式中,甚至多重赋值也是允许的。
命令可以用大括弧圈在一起{expr 1; ...; expr n}。此时,这一组命令的结果是该组中最后一个命令的值。既然一个组依然是一个表达式,它就可能放在括弧中,放在一个更大的表达式中,等等。
例如:for (i in 1:5) {x=x+i} 大括弧圈起来的表达式。
R语言的条件语句形式为:

if (expr1) {
    expr2
}else {
    expr3
}

例子如下:

x<-2
if (x>0) {
    print ("the number is positive")
}else {
    print ("the number is negative")
}
x <- -2
if (x>0) {
    print ("the number is positive")
}else {
    print ("the number is negative")
}

条件控制:ifelse

R 提供了if/else 条件语句向量形式的函数ifelse。它的语句形式是: ifelse(condition,a, b)
最终返回一个和最长的参数向量同长的向量。condition[i] 为真时,该向量对应的元素是a[i],否则为b[i]。
例子如下:

x <- 2
ifelse(x>0,"the number is positive","the number is negative")  ###回车则输出"the number is positive"

循环:for

R 语言有下面形式的for 循环架构: for (name in expr 1) expr 2
其中name 是循环变量,expr 1 是一个向量表达式(常常以1:20这种形式出现),而expr 2 常常是根据虚拟变量name 而设计的成组表达式。在name 访问expr 1 所有可以取到的值时,expr 2 都会运行。
例子如下:

for (i in 1:10) {
    print ("hello")
} ###回车输出10行hello

跳出循环:break & next

关键字break可以用于结束任何循环,甚至是非常规的。它是结束repeat 循环的唯一办法。
关键字next 可以用来结束一次特定的循环,然后直接跳入”下一次”循环。
看下面的两个例子来了解两者的区别:

x<-0
for (i in 1:5){
    x=x+1
    if (x>3) {
        break
    }
}
x ###回车则输出4
x<-0
for (i in 1:5) {
    if (i==3){
        next
    }
    x=x+i
}
x ###回车则输出12

repeat

repeat的语法:repeat expr
关键字break可以用于结束任何循环,甚至是非常规的。它是结束repeat 循环的唯一办法。

x<-1
i<-1
repeat {
    x[i+1] <- x[i]+1
    i <- i+1
    if (x[i]>20) {break}
}
x  ###回车则输出从1 到21

循环:while

while循环重复地执行一个语句,直到条件不为真为止。语法为:while (condition) expr
例子如下:

x<-5
while (x>0) {
    print ("hello world");
    x<- x-1
} ###回车则输出5行“hello world”

相关文章

网友评论

    本文标题:R语言系列之2-----流程控制

    本文链接:https://www.haomeiwen.com/subject/qrbofqtx.html