R语言入门—— for循环

1.基本结构:

for (变量 in list) {expression}
#变量可以为任何(合法的)名称

🌰:
你好
for (i in 1:10)print(i) 
#i为多少就打印多少
cat使前面没有【1】标号
给向量的每个元素依次赋值

例题1:利用循环实现斐波那契数列

num.fibs=50#斐波那契数列的最大个数
r=numeric(num.fibs)
r[1]=1
r[2]=1
for (i in 3:num.fibs){
    r[i]=r[r-2]+r[r-1]
}
r

例题2:利用循环计算一组数字当中最大的数字
计算机思路
注意,下标是从1开始,c语言中是从0开始。

2.矩阵的遍历(嵌套循环)

竖着来

思考:如何让这30个数横着生成?
解决:

a<-matrix(nrow=5,ncol=6)
a#这个时候生成的5行6列的矩阵a全部都是NA
n<-1#以后要把行列的值都赋成n
for( i in 1:5)#外循环(行)
   for(j in 1:6)#内循环(列)
     {
       a[i,j]<-n#全都赋值成n
       n<-n+1#下一个生成的是n+1,第一个数是1
}
a
#ctrl+A  全选
#ctrl+回车  运行
#mac用户ctrl改成command
横着来

应用:求最大/小值


a<-sample(1:99,20)
b<-matrix(a,nrow = 5)
b
myMax<-b[1,1]
myMin<-b[1,1]
Maxi<-1
Maxj<-1
Mini<-1
Minj<-1
for (i in 1:5) 
  for (j in 1:4)  {
    if (myMax<b[i,j]) {
      myMax<-b[i,j]
      Maxi=i#注意这里不要赋值"<-"
      Maxj=j
    }
    if (myMin>b[i,j]) {
      myMin<-b[i,j]
      Mini=i
      Minj=j
    }
  
  }
myMin
myMax
Maxi
Maxj
Mini
Minj
返回的结果

九九乘法表

实现:

rm(list = ls())#清空环境变量
a<-matrix(0,nrow=9,ncol=9)
a
for (i in 1:9) 
  for(j in 1:9)
    a[i,j]=i*j
for(i in 1:9){for(j in 1:i)#最多只能到8行8列,9行9列,不能到8行9列
  cat(a[i,j]," ")#大括号里的内容到这里指的是输出一行
  cat("\n")}#换行

3.循环的值与索引
基础

4.添加判断结果

a<-round(rnorm(10))#先小数后整数
a<sample(0:100,10)#0到100之间生成10个数

简洁
a<-sample (0:100,10)
a
r<-c(
for(i in 1:length(a)){
 r[i]<-"及格"
if(a[i]<60) r[i]<-"不及格"
}
 r1<-cbind (a,r)
 class (r1)#输出的是Matrix 矩阵
 r1
r2<-data.frame(a,r)#输出的是data.frame 数据框
r2
输出1

输出2
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容