【问题标题】:How to solve this error of conditional statements and Loops in R?如何解决 R 中条件语句和循环的错误?
【发布时间】:2018-06-19 00:53:47
【问题描述】:

您可以建议我任何类型的答案,不一定需要使用条件语句和循环。

我的数据集包含多个 id 和三个警报或组。 这是该概念的图片:
这是一个 ID 的实际数据集:Click me

概念是: 我有三个警报:重新学习 - 重建 - 替换。
并且在重新学习之后:重建或替换可以来,但重新学习不能来
重建后:replace 可以来,但 relearn 不能来 替换后:无法重新学习和重建。如果有任何替换只能来

我附上了图像和数据集以便更好地理解,这是我的尝试:

temp1 = NULL
temp2 = NULL
sql50 = NULL
for(i in 1:nrow(BrokenPins)) #First Loop 
{ 

  sql50 = sqldf(paste("select * from rule_data where key = '",BrokenPins[i,1],"'",sep = ""))
  for(j in 1:nrow(sql50))
  { #Second Loop
    while (head(sql50$Flag,1) == sql50$Flag[j] )
    {
      temp1 = sql50[j,]
      temp2 = rbind(temp2,temp1)
      print("Send")
      if(j == 1 || sql50$Flag[j] == sql50$Flag[j-1])
      {
        j = j+1
      }
      else(sql50$Flag[j] > sql50$Flag[j-1]) 
      {
        break
      }
    }
  }
}

第一个循环将遍历每个 id,第二个循环将为我提供该 id 的所有警报。 所以在图片中我添加了发送和不发送。它不会在实际表中。这基本上意味着发送意味着将其复制到新的数据帧,就像我在代码中的 rbind 上方所做的那样,并且不发送意味着不复制它。上面这段代码将运行,但只取第一个并结束它。

最后,基于上述数据集Click me:即为一个ID(key),Flag(1-Relearn,2-Rebuild,3-replace)。所以基于这个数据集。我的输出应该有第 1、2 和 7 行,因为 First Relearn[Flag 1] 来了,然后 Rebuild[Flag 2] 然后再 relearn[Flag 1] 不能来,只有重建 [Flag 2] 和 replace[Flag 2] 可以。

你能帮我解决这个概念吗?

【问题讨论】:

标签: r loops conditional


【解决方案1】:

我注意到的一件事是你使用了else 并且还提供了一个条件;当您想要if 语句的条件中未包含的所有情况时,您应该只使用else。基本上,您应该使用else if(sql50$Flag[j] > sql50$Flag[j-1]),而不是使用else(sql50$Flag[j] > sql50$Flag[j-1])

【讨论】:

  • 感谢卡梅伦!它确实对我帮助不大,但仍然没有任何线索。我该如何解决图片中提到的那个想法!
猜你喜欢
  • 2022-06-21
  • 1970-01-01
  • 2019-01-07
  • 2017-03-23
  • 2020-01-08
  • 1970-01-01
  • 2017-03-10
  • 1970-01-01
  • 2019-10-22
相关资源
最近更新 更多