Message-ID: <CAAxdm-7DbjmxpCNteXLftUEuq--Q-TzocxneCh=wssxBUzxjbA@mail.gmail.com>
Date: 2012-08-14T01:19:05Z
From: jim holtman
Subject: pass by reference
In-Reply-To: <CAGuusR99RT=a_bNLE-RPd4coE_x6M-aUF9WvhkdLXdAxcDGdFg@mail.gmail.com>
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.