[R] seq_len and loops

Henrik Bengtsson hb at biostat.ucsf.edu
Sun Dec 22 04:13:13 CET 2013


What about

seq_len2 <- function(length.out, from=1L) {
  seq(from=from, length.out=max(0L, length.out-from+1L))
}

> lapply(0:4, FUN=seq_len2, from=2L)
[[1]]
integer(0)
[[2]]
integer(0)
[[3]]
[1] 2
[[4]]
[1] 2 3
[[5]]
[1] 2 3 4

/Henrik

On Sat, Dec 21, 2013 at 2:57 PM, Göran Broström <goran.brostrom at umu.se> wrote:
> I was recently reminded on this list that
>
> "Using 1:ncol() is bad practice (seq_len is designed for that purpose)"
> (Ripley)
>
> This triggers the following question: What is "good practice" for 2:ncol(x)?
> (This is not a joke; in a recursive situation it often makes sense to
> perform the calculation for the start value i = 1, then continue with a loop
> over the rest, "the Fortran way";)
>
> I usually use
>
> if (ncol(x) > 1)
>     for (i in 2:ncol(x)){
>        ....
>
> but I can think of
>
> for (i in seq_len(x - 1)){
>     I <- i + 1
>    ....
>
> and
>
> i <- 1
> while (i < ncol(x)){
>     i <- i + 1
>     ....
>
> What is "good practice" (efficient and safe)?
>
> Göran Broström
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list