[R] The assign function in R

Applejus ielkhoury at gmail.com
Thu Jun 19 21:45:55 CEST 2008


Thanks all for your help!


Peter Dalgaard wrote:
> 
> Prof Brian Ripley wrote:
>> For the record, frame=1 and where=1 are not the same thing (whereas 
>> frame=0 and where=0 are both the session database): assign() in S has 
>> both 'frame' and 'where' arguments.
>>
> Drats... I stand corrected. Thanks to Brian for clearing this up.
> 
>     -p
>> where=1 is the first database on the search() path, and is roughly 
>> equivalent to the workspace (although you can attach databases ahead 
>> of the working database in S(-PLUS), people who write code like 
>> where=1 often do not know that).
>>
>> In S(-PLUS) there is a working database aka chapter, which is the 
>> nearest equivalent to the R workspace but is (conceptually) stored on 
>> disc and so permanent. It is like running R with --restore --save.  
>> Unless some other database is attached at pos=1, the working database 
>> is at where=1.
>>
>> The Blue Book contains the help page for assign() in S ca 1988, and 
>> apart from what where=0 means (which may well be a later addition) the 
>> information is all there.
>>
>> On Thu, 19 Jun 2008, Peter Dalgaard wrote:
>>
>>> Duncan Murdoch wrote:
>>>> Applejus wrote:
>>>>> Hello,
>>>>>
>>>>> I want to convert assign("a", b, where =1 ) from SPLUS to R.
>>>>> Is it safe to assume that the equivalent of where=1 is pos=1  in R?
>>>>>
>>>>> Thanks for help! 
>>>> Only a limited number of users here know what "where=1" means in 
>>>> S-PLUS. If one of those doesn't answer, you might want to explain 
>>>> that for those of us who have forgotten or who never knew.
>>>>
>>> Even some of those who should know may have forgotten by now... It is 
>>> detailed in the Blue Book somewhere. As I recall it, the story is (or 
>>> was?) that in S-PLUS objects are mostly on disk and the search path 
>>> is a list of directories. Then there is a stack of evaluation frames 
>>> plus two special frames, frame 0 and frame1. Frame 0 is permanent in 
>>> the sense that it exists for the duration of the session, frame 1 
>>> exists during evaluation of expressions. Assignments to frame 1 were 
>>> mostly done to overcome communication difficulties caused by the lack 
>>> of lexical scope in S -- two different functions needing to work with 
>>> the same temporary object would be the typical case.
>>>
>>> I would conjecture that once the purpose of the assignment to frame 1 
>>> is understood, you can redesign the code so that it becomes much 
>>> cleaner, possibly by using "<<-" semantics. For a quick port, what 
>>> you need is some sort of temporary environment. Assigning to pos=1 is 
>>> NOT the solution, because that is the global environment and you 
>>> will  (A) risk clobbering an existing variable of the same name and 
>>> (B) litter your workspace with intermediate results.
>>>
>>> -- 
>>>  O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
>>> c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
>>> (*) \(*) -- University of Copenhagen   Denmark      Ph:  (+45) 35327918
>>> ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)              FAX: (+45) 35327907
>>>
>>> ______________________________________________
>>> 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.
>>>
>>
> 
> 
> -- 
>    O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
>   c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
>  (*) \(*) -- University of Copenhagen   Denmark      Ph:  (+45) 35327918
> ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)              FAX: (+45) 35327907
> 
> ______________________________________________
> 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.
> 
> 

-- 
View this message in context: http://www.nabble.com/The-assign-function-in-R-tp17918416p18016661.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list