[R] unexpected subset select results?

David Winsemius dwinsemius at comcast.net
Tue Aug 24 02:36:51 CEST 2010


On Aug 23, 2010, at 6:28 PM, David Winsemius wrote:

>
> On Aug 23, 2010, at 5:51 PM, ivo welch wrote:
>
>> quizz---what does this produce?
>>
>>  d=data.frame( a=1:1000, b=2001:3000, z= 5001:6000 )
>>  attach(d); c <- (a+b)>25; detach(d)
>>  d= subset(d, TRUE, select=c( a, b, c ))
>>
>> yes, I know I have made a mistake, in that the code does not do  
>> what I
>> presumably would have wanted.  it does seem like unexpected behavior,
>> though, without an error.  there probably is some reason why this  
>> does
>> not ring an alarm bell...
>
> You have created a perfect example for why it is a bad idea to  
> attach data.frames.
>
> ?attach     # yes, I am yet again saying: "read the help page..."
>
> ... especially the 4th paragraph of the Details section.

I think it might helpful to consider the right way and the wrong way  
to do the same assignment using with(), which is my choice as an  
alternative to attache

Right;

d$c <- with(d, a+b >25) # note:  using "c" as an object name is a  
really confusing strategy

Wrong:
with(d, c <- a+b <25)

The wrong way is similar to what you might have thought would be  
happening. The attach() operation created its own environment, but  
that did not necessarily mean that all assignments would be creating  
new columns inside "d".


>
> -- 
> David.
>
>
>
> David Winsemius, MD
> West Hartford, CT
>
> ______________________________________________
> 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.

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list