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