From maechler at stat.math.ethz.ch  Fri Dec 10 09:32:14 2004
From: maechler at stat.math.ethz.ch (Martin Maechler)
Date: Fri Dec 10 09:32:18 2004
Subject: [Rd] Re: [R] Is  k  equivalent to  k:k ?
In-Reply-To: <200412100137.iBA1bGMV054978@atlas.otago.ac.nz>
References: <200412100137.iBA1bGMV054978@atlas.otago.ac.nz>
Message-ID: <16825.24334.69465.599617@gargle.gargle.HOWL>

I'm diverting to R-devel,  where this is really more
appropriate.

>>>>> "RichOK" == Richard A O'Keefe <ok@cs.otago.ac.nz>
>>>>>     on Fri, 10 Dec 2004 14:37:16 +1300 (NZDT) writes:

    RichOK> In this discussion of seq(), can anyone explain to
    RichOK> me _why_ seq(to=n) and seq(length=3) have different
    RichOK> types?  

well, the explantion isn't hard:  look at  seq.default  :-)

    RichOK> In fact, it's worse than that (R2.0.1):

    >> storage.mode(seq(length=0))
    RichOK>     [1] "integer"
    >> storage.mode(seq(length=1))
    RichOK>     [1] "double"

  { str(.) is shorter than  storage.mode(.) }

    RichOK> If you want to pass seq(length=n) to a .C or
    RichOK> .Fortran call, it's not helpful that you can't tell
    RichOK> what the type is until you know n!  It would be nice
    RichOK> if seq(length=n) always returned the same type.  I
    RichOK> use seq(length=n) often instead of 1:n because I'd
    RichOK> like my code to work when n == 0; it would make life
    RichOK> simpler if seq(length=n) and 1:n were the same type.

now if that really makes your *life* simpler, what does that
tell us about your life  ;-) :-)

But yes, you are right.  All should return integer I think.

BTW --- since this is now on R-devel where we discuss R development:
  
 In the future, we really might want to have a new type,
 some "long integer" or "index" which would be used both in R
 and C's R-API for indexing into large objects where 32-bit
 integers overflow.
 I assume, we will keep the    R "integer" == C "int" == 32-bit int
 forever, but need something with more bits rather sooner than later.
 But in any, case by then, some things might have to change in
 R (and C's R-API) storage type of indexing.


    RichOK> Can anyone explain to me why the arguments of seq.default are
    RichOK> "from", "to", "by", "length.out", "along.with"
    RichOK>                            ^^^^         ^^^^^
    RichOK> when the help page for seq documents them as
    RichOK> "from", "to", "by", "length", and "along"?


Well I can explain why this wasn't caught by R's builtin 
QA (quality assurance) checks:

The base/man/seq.Rd page uses  both \synopsis{} and \usage{}
which allows to put things on the help page that are not checked
to coincide with the code...
I'm about to fix this (documentation, not code).

Martin


[Rd] Re: [R] Is k equivalent to k:k ?
Martin Maechler