[R] The assign function in R
Peter Dalgaard
p.dalgaard at biostat.ku.dk
Thu Jun 19 09:49:21 CEST 2008
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
More information about the R-help
mailing list