[英]R, continue after error in loop with combination of arguments
我为相当重复的“函数”或一段代码创建了一个循环。
我根据两个变量对数据集进行了 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
循环工作正常。 我唯一的问题是当循环尝试过滤 x: B2 和 z: 5 时,因为数据集中不存在这种组合。 我收到以下错误:
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 的组合会有更多的不匹配。
有人有任何提示吗?
如果没有可重现的 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 )
可能会起作用。
for(x in c("B1", "B2", "B3")){
for(z in c(1:5)){
tryCatch({df <- filter(testb, column1== x, column2 == z)},
next)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.