[R] pass by reference

R. Michael Weylandt <michael.weylandt@gmail.com> michael.weylandt at gmail.com
Tue Aug 14 03:32:21 CEST 2012



On Aug 13, 2012, at 9:23 PM, Sachinthaka Abeywardana <sachin.abeywardana at gmail.com> wrote:

> Hi Jim, R,
> 
> What you just showed me simply prints out the 2nd column. If you inspect
> your original data, it still just has 1 column. So its still passing by
> value.

Yes -- that's entirely by design. Look into functional programming and meditate on the difference between functions and subroutines. 

Cheers,
Michael 

> 
> Thanks,
> Sachin
> 
> On Tue, Aug 14, 2012 at 11:19 AM, jim holtman <jholtman at gmail.com> wrote:
> 
>> You have to return the value of 'data' from the function.  Functions
>> do not have "side effects".
>> 
>>> data<-data.frame(col1=c(1,2,3,4,5))
>>> 
>>> getcol2<-function(data){
>> +     data$col2[data$col1<=2]="L"
>> +     data  # return value
>> + }
>>> 
>>> getcol2(data)
>>  col1 col2
>> 1    1    L
>> 2    2    L
>> 3    3 <NA>
>> 4    4 <NA>
>> 5    5 <NA>
>>> 
>> 
>> 
>> On Mon, Aug 13, 2012 at 9:08 PM, Sachinthaka Abeywardana
>> <sachin.abeywardana at gmail.com> wrote:
>>> Hi all,
>>> 
>>> I want to do the following:
>>> 
>>> data<-data.frame(col1=c(1,2,3,4,5))
>>> 
>>> getcol2<-function(data){
>>>    data$col2[data$col1<=2]="L"
>>> }
>>> 
>>> getcol2(data)
>>> 
>>> Unfortunately in the above col2 does not appear in the final data. So how
>>> would you pass this by reference such that you would get it back?
>>> 
>>> Thanks,
>>> Sachin
>>> 
>>>        [[alternative HTML version deleted]]
>>> 
>>> ______________________________________________
>>> 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.
>> 
>> 
>> 
>> --
>> Jim Holtman
>> Data Munger Guru
>> 
>> What is the problem that you are trying to solve?
>> Tell me what you want to do, not how you want to do it.
>> 
> 
>    [[alternative HTML version deleted]]
> 
> ______________________________________________
> 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