[Rd] proposal for "strict" versions of subsetting operators
Ben Bolker
bolker at zoo.ufl.edu
Tue Oct 28 20:40:49 MET 2003
You may think this is ridiculous, but here's the situation I'm thinking
about.
Students are trying (e.g.) to evaluate a likelihood for a series of
parameter values, and want to store the results in a vector, e.g.:
pvec = seq(0,10,by=0.1)
likvec = numeric(length(pvec))
They try something like
for (p in pvec) {
likvec[p] = likfun(p)
}
rather than
for (pctr in 1:length(pvec)) {
p = pvec[pctr]; likvec[pctr] = likfun(p)
}
I am perfectly aware that they could just do sapply(pvec,likvec) instead,
and that they will be in trouble with other parameter vectors like
seq(1,100,by=4) which will not put the answers where they want them.
Nevertheless, this is a trap my students fall into.
I can imagine that implicit floor() is convenient, which is why I was
suggesting this "feature" as an option, FALSE by default -- similar to the
check.bounds option.
Ben Bolker
On Tue, 28 Oct 2003, Prof Brian Ripley wrote:
> You would need at least a fuzz for computed indices being slightly
> non-integer (although the calling code should do that).
>
> I can think of several cases where the implicit floor() is convenient.
> Can you tell me of examples where users would do this by accident (or out
> of non-RTFM)?
>
> On Tue, 28 Oct 2003, Ben Bolker wrote:
>
> >
> > On a related topic: is there any chance/any interest in a slight
> > modification of the subsetting code that would generate a warning when the
> > user tried to subset with a non-integer? The current behavior is that the
> > non-integer is coerced to an integer, which means that e.g. x[3.8] is
> > equivalent to x[3]. I can't think of (or find in the documentation) any
> > time when this would actually be a desired behavior.
> > The only integer-testing behavior that I can find in the code base is in
> > some of the discrete-distribution code ...
>
> Yes, but then they are documented that way, and selection is documented to
> do as.integer().
>
> > I might be able to hack this myself -- it looks as though ExtractSubset
> > in subset.c might be the place to do this ...
> >
> > Ben Bolker
> >
> >
> >
>
>
--
620B Bartram Hall bolker at zoo.ufl.edu
Zoology Department, University of Florida http://www.zoo.ufl.edu/bolker
Box 118525 (ph) 352-392-5697
Gainesville, FL 32611-8525 (fax) 352-392-3704
More information about the R-devel
mailing list