如果在双循环内部

时间:2015-07-17 17:48:26

标签: r loops if-statement

在双循环内部,我为每个电视台组合创建数据子集,数月由循环完成。例如,我有月数7,8,9和A,B,C站。碰巧在第9个月没有车站C. 然后子集为空,函数抛出,并且没有可能的聚合错误。

因为你可以看到我试图使用if语句如果有0行不继续使用代码但是继续下一个循环。

但我仍然得到同样的错误。消息

你能导航我吗?

for (Mesic in monthnumbers){



      for (Stanica in TVstations){

          Client<-data[data$month ==Mesic & data$Channel_group1 ==Stanica & data$Brand == brand, ]
          if (nrow(Client)!=0)
    ###some code
   Client_AGG<-aggregate(formula= Client$BUYING_GRPs ~ Client$Brand,data= Client,FUN = sum)
    ###some code
    }
}
}

1 个答案:

答案 0 :(得分:0)

像格雷戈尔评论的那样,可能有更好的方法来解决这个问题。

但快速修补程序可能是在客户端&lt; - 行之前进行错误检查,因为这是它正在寻找不存在的通道的地方。在尝试从中获取数据之前,检查数据$ Channel_group1 == Stanica是否存在。

使用for循环的另一个选择是循环使用你知道的东西:

subsetindex <- unique(data[ ,c('month','Channel_group1')])
for(i in 1:nrow(subsetindex)){
  Client<-data[data$month ==subsetindex[i,'month'] & data$Channel_group1 ==subsetindex[i,'Channel_group1'] & data$Brand == brand, ]
  #other code
}