|
循环控制:for循环,repeat 和while
R 语言有下面形式的for 循环架构
> for (name in expr 1 ) expr 2
其中name 是循环变量,expr 1 是一个向量表达式(常常以1:20这种形式出现),
而expr 2 常常是根据虚拟变量name 而设计的成组表达式。在name 访问expr 1 所有
可以取到的值时,expr 2 都会运行。
下面是个例子。假定ind 是分类指标向量(vector of class indicators),我们将
依这种分类指标绘制y 对x的散点图。一种方法时用函数coplot()3 产生对应因子各个
水平的散点图。另外一种方法就是把所有图在屏幕上同时显示,如下面命令所示:
> xc <- split(x, ind)
> yc <- split(y, ind)
> for (i in 1:length(yc)) {
plot(xc[], yc[]);
abline(lsfit(xc[], yc[]))
}
(函数split() 通过某个因子把一个大的向量分成一系列小的向量。这是一个非常
有用的函数,常常和盒状图一起使用。具体细节可以用help 命令得到。)
警告:相比其他程序语言,R 代码里面很少使用for() 形式的循环语
句。在R 里面用`完整对象'(whole object)形式可能既清晰又高效4。
其他循环语句包括
> repeat expr
和语句
> while (condition) expr
关键字break可以用于结束任何循环,甚至是非常规的。它是结束repeat 循环的
唯一办法。
关键字next 可以用来结束一次特定的循环,然后直接跳入\下一次"循环。
控制语句的应用常常和函数相关。这在下一章编写你自己的函数<页码:54>中
会详细讨论,同时也会引用更多的例子。 |
|