在SO上,当需要遍历集合的索引值时,通常会看到以下代码:
for (i in 1:length(x)) {
# ...
}
代码在集合为空时运行不正常,因为 1:length(x)
变成了 1:0
,这给变量i赋值 1
和 0
。iterate <- function(x) {
for (i in 1:length(x)) {
cat('x[[', i, ']] is', x[[i]], '\n')
}
}
> iterate(c(1,2,3))
x[[ 1 ]] is 1
x[[ 2 ]] is 2
x[[ 3 ]] is 3
> iterate(c())
x[[ 1 ]] is
x[[ 0 ]] is
我记得看到过一种优雅的习惯用语来定义一个在x
为空时没有元素的序列,但我现在记不起来了。你使用什么习惯用语?
有没有优雅的方式将空列表转换为 False?
seq_along
。 - Sim