Sim*_*Sim 10 iteration idioms r
在迭代集合的索引值时,通常会在SO上看到以下代码:
for (i in 1:length(x)) {
# ...
}
Run Code Online (Sandbox Code Playgroud)
当集合为空时,代码行为异常,因为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
Run Code Online (Sandbox Code Playgroud)
我记得看到一个优雅的习惯用于定义一个没有元素的序列,当它x
是空的但我记不起来了.你用什么成语?
Das*_*son 12
无论是seq
或seq_along
给你一些更合理的,当你感兴趣的对象为空.
> x <- NULL
> seq(x)
integer(0)
> seq_along(x)
integer(0)
> x <- rnorm(5)
> seq(x)
[1] 1 2 3 4 5
> seq_along(x)
[1] 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)