R使用if下一个中断for循环时出错

时间:2019-12-09 19:28:48

标签: r for-loop if-statement next

我正在尝试在if循环中使用for语句,以便如果不满足if条件,R将停止运行该{{1} }值,但将继续运行整个循环,而且我认为我遇到了一个(简单的)语法错误,这使我得到的结果与预期不同。

下面是我的示例数据集和循环:

i

如果我仅在循环中计算test <- matrix(ncol=3, nrow=3, data = c(10, 20, 30, NA, 10, 20, 10, 30, 20), byrow = T) mean_fun<-function(x,y){ mean <- sum(x,y)/2 return(mean) } for (i in (1:nrow(test))){ var1 <- vector() var2 <- vector() var1[i] <- mean_fun(test[i,1], test[i,2]) if (is.na(var1[i]==TRUE)) next var2[i] <- mean_fun(var1[i], test[i,3]) print(var2) } 的值,则var1。如果我的var1 = c(15, NA, 20)我不想计算var2。简而言之,我想从此循环中获得的结果是var1 == NA

但是,当我运行此循环时,我得到var2 = c(22.5, NA, 20.0),这意味着该循环对于[1] 22.5 [1] NA NA 20以及也许i=1都可以正常运行,但在i=2时陷入混乱或i=2?我无法弄清楚语法是如何工作的,因此它给了我i=3。任何建议将不胜感激!

1 个答案:

答案 0 :(得分:1)

您需要在循环之前 初始化向量,而不是在每次迭代时都在循环内部。另外,请在循环后 而不是每次迭代都检查结果。

var1 <- vector()
var2 <- vector()

for (i in (1:nrow(test))){
  var1[i] <- mean_fun(test[i,1], test[i,2])
  if (is.na(var1[i]==TRUE)) next
  var2[i] <- mean_fun(var1[i], test[i,3])
}

var1
# [1] 15 NA 20
var2
# [1] 22.5   NA 20.0