在seq
的极端情况下,R的lower == upper - 1
函数的“聪明”使我深受其害:
> 1:0
[1] 1 0
> seq(1, 0)
[1] 1 0
> seq(1, 0, 1)
Error in seq.default(1, 0, 1) : wrong sign in 'by' argument
我并不是在问这种奇怪行为的原因,而是因为它只是我们必须忍受的遗产。相反,我想知道是否有任何程序包实现了
seq
运算符,该运算符在这种情况下会返回空序列,如下所示:safe.seq.int <- function(from, to, by=1) {
if (from > to) integer(0) else seq.int(from, to, by)
}
> safe.seq.int(1, 0)
integer(0)
最佳答案
正是出于这个原因,使用seq_len(n)
而不是1:n
是一个好习惯-如果是n=0
,那么您会得到一个空序列而不是c(1,0)
。
希望这可以帮助
关于r - 序列构造,如果lower大于上限,则创建一个空序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10922169/