找回密码
 注册
查看: 7658|回复: 3

比较R语言、perl语言,matlab中for循环和while循环的使用

[复制链接]
发表于 2012-3-11 10:16:14 | 显示全部楼层 |阅读模式
                比较R语言、perl语言,matlab中for循环和while循环的使用                         
                               作者:redcat
                               生物统计家园网
对于海量数据的处理时代,各种语言如数据处理的,统计计算的都应该掌握一下,各取所长,达到高效的目的。
对于R语言、perl语言,matlab中的for循环也是各有不同。
(一)R语言
R语言和matlab中以对象处理为主,体现出强大的智能性,因此对于语言的循环设计中以操作对象为主,
例如:
for(i in 1:20){
  cat(i);
  cat(" ");
  i=i+3;
}

运行结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

点评:我们可以看出,循环中处理的对象是1:20这20个数,对每个数进行操作不管循环内部i如何变化。因此,循环体内的i=i+3就不会对循环条件中的变量造成改变,具体执行过程相当于:
i=1 -> i=i+3,此时i=4;-> 第一次循环结束,第二次循环开始,i=2。
尤其注意,i变成4又变成2,所以打印出来的结果是,1,2,3,4....20的连续值。

如果想要随意的改变条件中的变量,请使用while循环
i=1
while(i<=20){
  cat(i);
  cat(" ");
  i=i+3
}

运行结果:
1 4 7 10 13 16 19

(二)Matlab
matlab和R语言类似,以对象处理为主,体现出强大的智能性,因此对于语言的循环设计中以操作对象为主,
例如:
for i=1:20
       i
      i=i+3;
end

运行结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

点评:我们可以看出,循环中处理的对象是1:20这20个数,对每个数进行操作不管循环内部i如何变化。因此,循环体内的i=i+3就不会对循环条件中的变量造成改变,具体执行过程相当于:
i=1 -> i=i+3,此时i=4;-> 第一次循环结束,第二次循环开始,i=2。
尤其注意,i变成4又变成2,所以打印出来的结果是,1,2,3,4....20的连续值。

如果想要随意的改变条件中的变量,请使用while循环
i=1;
while i<=20
    i
    i=i+3;
end

运行结果:
1 4 7 10 13 16 19

(三)perl语言
perl语言和上面两种语言有所不同,对于循环条件中的变量和循环体中的变量是统一的,循环体中的变量变化会导致循环条件中的变量改变,
例如:
  my $i;
for($i=1;$i<=20;$i++){
  print"$i ";
  $i=$i+3;
}
运行结果:
1 5 9 13 17
点评:运行过程相当于i=1->i=i+3,此时i=4;  -> i++,此时i=5,然后开始第二次循环,因此打印的结果为1 5 9 13 17

再例如
  my $i;
for($i=1;$i<=20;$i){
  print"$i ";
  $i=$i+3;
}
运行结果:
1 4 7 10 13 16 19
点评:运行过程相当于i=1->i=i+3,此时i=4;  -> i变量不操作,此时i=4,然后开始第二次循环,因此打印的结果为1 4 7 10 13 16 19

可以比较一下上面两个例子,仔细体会,
同样也可以用while来实现:
  my $i;
  $i=1;
while($i<=20){
  print"$i ";
  $i=$i+3;
}
运行结果:
1 4 7 10 13 16 19

回复

使用道具 举报

发表于 2012-12-21 21:57:31 | 显示全部楼层
确实很好哦 提醒了我,谢谢!
回复 支持 反对

使用道具 举报

发表于 2013-1-6 16:48:46 | 显示全部楼层
好好地看下这个~~
回复 支持 反对

使用道具 举报

发表于 2013-1-14 16:18:28 | 显示全部楼层
受教了受教了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|生物统计家园 网站价格

GMT+8, 2024-11-22 19:01 , Processed in 0.026854 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表