R:在循环内剪切变量

时间:2015-08-11 11:55:10

标签: r

我有一个循环,我想对不同的样本进行多次计算,并保存每个样本的结果。这些样本针对每个循环不同。我想使用" i"在循环中切割样品。

例如:

  • 在循环1(i = 1)中,我有一个0-1的样本和1-100的样本。
  • 在循环2(i = 2)中,我有一个0-2的样本和2-100的样本。
  • 在循环99(i = 99)中,我有一个0-99的样本和99-100的样本。

我构建了以下功能,但是 cut2功能存在问题,因为它没有识别" i"。在lapply循环之外它可以工作,但不在循环内。

    d=data.frame(MEt_Rainfed=rep(0,100),MEp_Rainfed=rep(0,100),MEt_Irrigation=rep(0,100),MEp_Irrigation=rep(0,100))

    o<-lapply(0:100, function(i){

        Alldata$irri=cut2(Alldata$irrigation,i)
        levels(Alldata$irri)<-c("0","1")

       Alldata_Rainfed<-subset(Alldata, irri == 0)
       Alldata_Irrigation<-subset(Alldata, irri == 1)

    #calculations per sample, then store all the values per i and per variable in a dataframe: (the calculations are not shown in this example)

     d[i, ] = c(MEt_Rainfed,MEp_Rainfed,MEt_Irrigation,MEp_Irrigation)

   })

   out<-as.data.frame(do.call(rbind, o))

1 个答案:

答案 0 :(得分:0)

我仍然不确定上一个例子中出了什么问题。但是,我用另一种方式解决了这个问题:

o<-lapply(1:99, function(i){
Alldata_Rainfed<-subset(Alldata, irrigation <= i)
Alldata_Irrigation<-subset(Alldata, irrigation > i)
d[i, ] = c(MEt_Rainfed,MEp_Rainfed,MEt_Irrigation,MEp_Irrigation)

})

值得注意的是,循环也不应该从0到100,因为这正是变量的范围。