[R] Why doesn't vec[-real.number] give an error or warning? Kids do the darndest things!

Duncan Murdoch murdoch at stats.uwo.ca
Sun Mar 14 14:28:12 CET 2010


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" <jholtman at 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 <hanson at 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 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.
>>
> 
> ______________________________________________
> 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