seq(n,m)
无法生成空序列,
因为序列seq(n,m)
中的步骤方向从向上切换到向下
当m
小于n
时:
seq(1,2)
有两个要素:1,2 seq(1,1)
有一个元素:1 seq(1,0)
有两个元素:1,0。不幸的是seq
没有可选的参数来强制执行步骤的方向。
我已经在R包中发现了两个错误,其中seq(1,n)
(或1:n
)意味着
所有正整数的序列小于或等于n
,但n
可能为0。
目前我的权宜之计是像
ifelse(n>=1,seq(1,n),integer(0))
或
seq(1,length.out=max(n,0))
或者,如果n至少是非负的,
seq(0,n)[-1]
乍一看,第一眼看起来并不那么糟糕,但如果n
是一个更长的表达,他们就会这样做。
如果n
为否定,则最后一个不起作用:
> n <- -3
> seq(0,n)[-1]
[1] -1 -2 -3
有没有更好的想法来生成可能为空的整数序列?
答案 0 :(得分:0)
如果您对for
循环在R中的工作方式不满意,可能您更喜欢使用迭代器包的foreach
循环:
library(iterators)
library(foreach)
foreach(i = icount(3), .combine = "c") %do% {i}
#[1] 1 2 3
foreach(i = icount(-3), .combine = "c") %do% {i}
#NULL
foreach(i = icount(0), .combine = "c") %do% {i}
#NULL