10
それは、コレクションのインデックス値を反復処理するために来るとき、次のコードは、一般的にSO上で見られている
for (i in 1:length(x)) {
# ...
}
コレクションが空であるとき1:length(x)
がi
与え1:0
なるためのコードでは、誤動作値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
は空ですが、私はそれを思い出すことができないとき要素がないシーケンスを定義するためのエレガントなイディオムを見て思い出します。どのようなイディオムを使用していますか?
「seq_along」は私が見たイディオムでした。 – Sim
しかし、インデックス変数を必要とせず、何かの要素をループしたい場合は、lapply/sapply/vapplyのいずれか、またはplyrパッケージからのものがよりエレガントになるかもしれません。 – Spacedman
@Spacedman非常に真実で、OPが心に留めておくべきことは間違いありません。 – Dason