如果输出为逻辑(0),则跳过当前迭代并继续进行 R 中的下一个迭代

问题描述 投票:0回答:1

我在 R 中有一个 for 循环。 在 for 循环里面我有

kl<-stri_detect_fixed(nn, "new")

在某些情况下,kl 是逻辑(0)。如果是这种情况,我想跳过当前迭代并继续 R 中的下一个迭代。

我尝试过类似的事情

if (is.logical(kl)==T) {
next
}

但是不起作用。有什么想法吗?

非常感谢

r loops for-loop
1个回答
0
投票

stringi::stri_detect_fixed()
的返回值是逻辑向量,因此
is.logical(kl)
始终为
TRUE

但你可以测试一下它的长度是否为0:

lst <- list(a = c("foo", "bar"),
            b = NULL,
            c = "news")

for (nn in lst){
  kl <- stringi::stri_detect_fixed(nn, "new")
  if (length(kl) < 1) next
  message("no skip for ", paste(nn, collapse = ", "))
}
#> no skip for foo, bar
#> no skip for news

或者如果输入是

NULL
:

for (nn in lst){
  if (is.null(nn)) next
  kl <- stringi::stri_detect_fixed(nn, "new")
  message("no skip for ", paste(nn, collapse = ", "))
}
#> no skip for foo, bar
#> no skip for news

创建于 2024-09-21,使用 reprex v2.1.1

© www.soinside.com 2019 - 2024. All rights reserved.