首页 > 解决方案 > R,在循环错误后继续使用参数组合

问题描述

我为一个相当重复的“函数”或一段代码创建了一个循环。

我根据两个变量对数据集进行 dplyr 过滤。然后我制作一个线性模型,计算平均值并进行 LSD 测试。

我制作的循环填充过滤器中的变量。

for(x in c("B1", "B2", "B3")){
  for(z in c(1:5)){
  df <- filter(testb, column1== x, column2 == z )
#rest of functions here

循环工作正常。我遇到的唯一问题是当循环尝试用 z: 5 过滤 x: B2 时,因为数据集中不存在这种组合。我收到以下错误:

Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) : 
contrasts can be applied only to factors with 2 or more levels

我确切地知道它为什么会产生错误,因为该因子的第 2 列 z=5 不存在。我希望循环继续到第 1 列和第 2 列的下一个变量,如果发生这种情况,请转到 x:B3 和 z:1。

我使用时代码工作正常

for(z in c(1:4)){

但我想念 x:B1 和 x:B3 与 z:5 的组合。

稍后我想从 column1 中做更多的变量,但是 x 和 z 的组合会有更多的不匹配。

任何人有任何提示?

标签: rfunctionloops

解决方案


如果没有可重现的 Example ,我无法对其进行测试,但是将您的代码更改为:

for(x in c("B1", "B2", "B3")){
  for(z in c(1:5)){
     if(any(testb$column1 == x & testb$column2 == z)){
        df <- filter(testb, column1== x, column2 == z )

可能会成功。


推荐阅读