On 14/03/2010 10:09 AM, Bryan Hanson wrote:
Jim, I completely agree with everything you said.

I am curious about the cases where one would use a real number as an index
and anticipate that R would do the as.integer for you, rather than turning
it into an integer yourself.

Indices are very frequently floating point numbers, e.g. in

x[1]

the 1 will be stored as floating point. So the question is really about truncating the value of a floating point number. I imagine there are some intentional uses of this e.g. x[(n+1)/2] for a midpoint of a vector, working whether n is even or odd. It would make more sense to use x[(n+1) %/% 2] in this case, so it's not a compelling argument against a change, but it would be inconvenient for people to have to make the change.

Duncan Murdoch




If anyone has a simple example or situation where this arises, I'd like to
see it.  Of course, most cases might be rather idiosyncratic, and too
complex to really share.  Just wondering mostly, because I am not a
programmer by trade, and when I write code that uses indexing, and the
proposed index comes up as a real number, I've generally made a mistake in
my thinking!

Bryan


On 3/13/10 11:39 PM, "jim holtman" <jholt...@gmail.com> wrote:

That notation  'v[-1.18]' is not going to remove the 12th entry if it was
1.18.  They should have used:
v[-which(v == 1.18)] to remove it, but it probably would not have worked and we would have refered
them to FAQ 7.31.
R is doing exactly what you are asking it to do. There are cases where I have used a real number and would not have expected an error. As you say, kids do the darnest things. I use the comment that "users always
find new and unusual ways to use a system that the developers never
envisioned".  All we can do it tell them how it does work (for better or for
worse) and even if they think it is wrong, we can not change it as this point
in time to adapt to their way that they think it should work.
R is a great learning experience for people and it allows you to experiment
without breaking things.  I still have to write little test cases every so
often to understand how things work, especially if you have NAs in your data
and you are trying to do some equality test or do a calculation on it.

On Sat, Mar 13, 2010 at 9:39 PM, Bryan Hanson <han...@depauw.edu> wrote:
Hi all...

My students were conflating grepping for a value in a vector to get the
index, and then removing it with [-index], for instance like this:

set.seed(17)
v <- rnorm(20)
s <- v[-1.18]

They were trying to remove the 12th value in v, which is -1.18 or so.

But the result is, as documented in ?Extract, to coerce 1.18 to the next
lowest integer, and remove the 1st value of v, not the 12th value.

This strikes me as something that ought to give an error or warning, or at
least be in the R Inferno, but I couldn't find it there.

Under what circumstances would the documented behavior be valuable?  I can
see that it avoids doing floor or as.integer in computations where an index
is needed but real numbers are generated for whatever reason, but is that
common?

Thanks for any insight.  Bryan
*************
Bryan Hanson
Acting Chair
Professor of Chemistry & Biochemistry
DePauw University, Greencastle IN USA

______________________________________________
R-help@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.


______________________________________________
R-help@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.

______________________________________________
R-help@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.

Reply via email to