[R] pass by reference

jim holtman jholtman at gmail.com
Tue Aug 14 03:19:05 CEST 2012


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.



More information about the R-help mailing list