次のコードは、コレクションのインデックス値を反復処理する場合に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
思い出しますが、それを思い出せません。どのイディオムを使用していますか?