打破嵌套for循环

时间:2016-12-01 09:23:25

标签: r for-loop

我知道如何break out of a for loop有一个答案,但是当条件满足时我仍然无法摆脱for循环,然后继续外循环中的表达式:

x <- 1:100
n <- as.factor(rep(c(1:5), 20))
data <- data.frame(x, n)
y <- 1:20
m <- 10

for(i in levels(n)){
  x.subset <- subset(data$x, data$n == i)

  for(j in 1:length(y)){
    x.big <- NULL
    x.big[j] <- x.subset[j]^2
    x.big.prev <- x.big #####

    if((mean(x.big.prev)-mean(x.big)) >=30){
          break
        } #end of if() statement
      } #end of j-loop
      plot(y, x.big.prev)
} #end of i loop

我试图让新的x.subset(来自i的一组新值)具有比之前x.subet更大的平均值时停止j循环我试过将x.big.prevx.big进行比较。我要么继续得到两个结果中的一个:

Error in if ((mean(x.big.prev) - mean(x.big)) >= 30) { : 
missing value where TRUE/FALSE needed

OR

它遍历j的所有迭代,只是绘制所有内容。

我想我把表达式x.big.prev <- x.big放在了错误的地方,但话又说回来,我不知道在哪里可以比较两个向量的平均值。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您需要在内部循环之外初始化<!DOCTYPE html> <html ng-app="plunker"> <head> <meta charset="utf-8" /> <title>AngularJS Plunker</title> <script>document.write('<base href="' + document.location + '" />');</script> <link rel="stylesheet" href="style.css" /> <script data-require="angular.js@1.4.x" src="https://code.angularjs.org/1.4.12/angular.js" data-semver="1.4.9"></script> <script src="app.js"></script> </head> <body ng-controller="MainCtrl"> </body> <script> var app = angular.module('plunker', []); app.controller('MainCtrl', function($scope) { $scope.name =[ { "Name": "myname", "Password": "mypasscode" }, { "Name": "yourname", "Password": "yourcasscode" } ]; angular.forEach($scope.name, function(k , v) { angular.forEach(k, function(x , y) { alert(y+"--"+x); }) }) }); </script> </html>x.big。在x.big.prev - 语句之后,必须在内循环内重新定义x.big.prev。试试这个:

if()