10
下面的代碼是在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
是空的,但我不記得它的序列。你用什麼成語?
完美,'seq_along'是我看到的成語。 – Sim 2012-08-10 03:43:41
但是,如果你不需要索引變量,只想循環某些東西的元素,lapply/sapply/vapply或plyr包中的某個東西可能會更優雅。 – Spacedman 2012-08-10 06:42:11
@Spacedman非常真實,這絕對是OP應該記住的東西。 – Dason 2012-08-10 13:44:03