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”
网友评论