我知道如何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.prev
与x.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
放在了错误的地方,但话又说回来,我不知道在哪里可以比较两个向量的平均值。
有什么想法吗?
答案 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()