[R] Odp: Problem with retrieving updated variables after attach()

David Croll david.croll at gmx.ch
Tue Feb 10 13:23:50 CET 2009


Well, I knew that attach() only creates a copy of the variables in the 
search path.

What I wanted to ask was how to *retrieve* that copy...

 > mat
 id age
1 NA  NA
2 NA  NA
3 NA  NA
4 NA  NA
5 NA  NA  

 > attach(mat)

 > id <<- sample(100,5)
 > age <<- rnorm(5,mean=30)

How can I make a new data frame out of the id and age that were changed 
above?



> Hi
>
>
> r-help-bounces at r-project.org napsal dne 10.02.2009 12:02:53:
>
>   
>> Hello,
>>
>> suppose I have a data frame:
>>
>>     
>>> mat
>>>       
>>  id age
>> 1 NA  NA
>> 2 NA  NA
>> 3 NA  NA
>> 4 NA  NA
>> 5 NA  NA
>>
>> Then I attach the data frame:
>>
>>     
>>> attach(mat)
>>>       
>
> Look into docs what attach does. If you do not understand environments use 
> attach with great care
>
> The database is not actually attached. Rather, a new environment is 
> created on the search path and the elements of a list (including columns 
> of a data frame) or objects in a save file or an environment are copied 
> into the new environment. If you use <<- or assign to assign to an 
> attached database, you only alter the attached copy, not the original 
> object. (Normal assignment will place a modified version in the user's 
> workspace: see the examples.) For this reason attach can lead to 
> confusion. 
>
>
>   
>> I assign some new values...
>>
>>     
>>> id <<- sample(100,5)
>>> age <<- rnorm(5,mean=30)
>>>       
>> Then I want to create a new data frame from the variables id and age 
>>     
> which 
>   
>> still are attached to position 2 of the R environment...
>>
>>     
>>> new_mat <- data.frame(ls(pos=2)) # I want to rescue ALL variables that 
>>>       
> were 
>   
>> created by attach(mat)
>>
>>     
>>> new_mat
>>>       
>>  ls.pos...2.
>> 1         age
>> 2          id
>>
>> But this leads to a bogus object... how can I rescue the updated id and 
>>     
> age 
>   
>> values into new_mat?
>>     
>
> What about not using attach and transform mat directly
>
>   
>> mat$age <- rnorm(5,mean=30)
>> mat$id <- sample(100,5)
>> mat
>>     
>   id      age
> 1 24 29.17842
> 2 88 31.22606
> 3 32 30.81540
> 4  5 29.31528
> 5 11 29.32775
>
> Regards
> Petr
>
>
>   
>> Regards,
>>
>> David
>>
>> -- 
>> Jetzt 1 Monat kostenlos! GMX FreeDSL - Telefonanschluss + DSL 
>> für nur 17,95 Euro/mtl.!* http://dsl.gmx.de/?ac=OM.AD.PD003K11308T4569a
>>
>> ______________________________________________
>> 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