1
我知道如何对break out of a for loop有一个答案,但是当条件满足时我仍然无法摆脱for循环,然后继续到外循环中的表达式:嵌套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
我试图让j循环由30我试图阻止时,新x.subset
(从i
一组新的值)比以前x.subet
更大的平均通过与比较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
放在错误的地方,但是再次,我不确定在哪里放置以允许两个向量的平均值之间的比较。
任何想法?
你需要把'x.big.prev <:试试这个。 PS:'x.subset < - subset(data,n == i,select = x)'是正确的语法。当然'data [data $ n == i,“x”]'通常是可取的。 – Roland
一个小问题(也许只适用于你的例子):当你定义'y < - 1:20'时,'for(j in y)'和'for(j in 1:length(y) '。 – LAP
@Roland,即使在这个时候他/她的设置,'mean(x.big.prev)-mean(x.big)'应该导致为'0',并且在使用时不会产生错误消息'if()'-statement,or it it? – LAP