R语言- for循环

Python051

R语言- for循环,第1张

for循环结构语法:

其中var表示循环变量,seq为向量,expr为执行的语句。

例1 下面我们通过for循环来计算

因此

例2 Fibonacc数列为: ,求Fibonacc数列前50项的和。

运行结果

因此Fibonacc数列前50项的和为32951280098。

赋默认值,在for循环中进行修改。

编程中减少代码重复的两个工具,一是循环,一是函数。循环,用来处理对多个同类输入做相同事情(即迭代),如对不同列做相同操作、对不同数据集做相同操作。R语言有三种方式实现循环:for循环、while循环。apply函数族。泛型函数map。

apply函数族和泛型函数map能够更加高效简洁地实现一般的for循环、while循环,但这不代表for循环、while循环就没用了,它们可以在更高的层次使用(相对于在逐元素级别使用)。

我的建议是可能要大改整个程序:用一个list(比如叫data.list)把所有data frame或者之类的东西装起来,用的时候用data.list[[i]]来取出第i个data frame。用sqldf的时候,第一个和第三个可以用paste来写命令,第二个和第四个可能需要先用一个data frame(比如叫data)来暂时存储data.list里的一个data frame再操作sqldf。总的来说像这样(没怎么用过SQL,可能有问题):

dataold_list<-dataold.list<-datanew_list<-datanew.list<-vector("list",100)

for(i in 1:100){

    dataold_list[[i]]<-sqldf(paste("select * from Dataold a,num",i," b

                    where a.LOAN_NO=b.LOAN_NO",sep=""))

    dataold_list[[i]]<-dataold_list[[i]][,-1]

    data<-dataold_list[[i]]

    dataold.list[[i]]<-sqldf("select * from a,data b

                      where a.LOAN_NO=b.LOAN_NO")

    datanew_list[[i]]<-sqldf(paste("select * from Datanew a,num",i," b

                           where a.LOAN_NO=b.LOAN_NO",sep=""))

    datanew_list[[i]]<-dataold_list[[i]][,-1]

    data<-datanew_list[[i]]

    datanew.list[[i]]<-sqldf("select * from a,data b

                       where a.LOAN_NO=b.LOAN_NO")

}