R中有一种优雅的方法可以跳过一个空元素上的循环



我想循环浏览列表并使用其nth元素,但列表可以为空:

l <- list()
for(i in 1:length(l)) a <- l[[i]]

如果列表具有1个元素,则一切都很好。但是,如果列表为空,则长度(l)等于零,因此循环将尝试运行两次并将i从1数计数。这会引发错误,因为l[[1]]不存在:

> Error in l[[i]] : subscript out of bounds

有没有比检查长度(l)大于零更好的方法来跳过for循环?

您已经偶然发现了R。

for (i in seq_along(obj))

而不是

for (i in 1:length(obj))

正是出于这个原因。seq_along(list())将返回integer(0),完全跳过循环。

如果您只有长度,则可以选择seq_len,这可能为零:

for (i in seq_len(x))

seq_len()x = 0时会做正确的事情,如果x <0,通常是您想要的。

相关内容

  • 没有找到相关文章

最新更新