Nicolas -
Along with returning a value, the return function passes
control back to the caller of the function. So any statement
after a return statement will just be ignored.
In R the way this is handled is by returning a list. Change
return(pop)
return(grid.dens)
to
return(list(pop=pop,grid.dens))
and you can access the two parts like this:
result = UUU(pop,grid.dens)
result$pop # updated pop
result$grid.dens # updated grid.dens
Hope this helps.
- Phil Spector
Statistical Computing Facility
Department of Statistics
UC Berkeley
spector at stat.berkeley.edu
On Tue, 25 Jan 2011, Nicolas Gutierrez wrote:
> Hi All,
>
> I have a for loop inside the function and I cannot get UUU to give me an
> updated grid.dens object when I run the function (it does update when I run
> just the for loop). Here's a simplified version of my function:
>
> UUU=function(pop, grid.dens) {
>
> for (i in 1:10){
> Food=grid.dens[pop$yloc[i],pop$xloc[i]] #use initial grid.dens values
> Consumed=(pop$weight[i]*0.25)
> Left=Food-Consumed
> grid.dens[pop$yloc[i],pop$xloc[i]]=Left #update grid.dens values on i
> pop$birth[i]=pop$birth[i]+1
> }
> return(pop)
> return(grid.dens)
> }
>
> I get an updated pop, but not an updated grid.dens. What am I doing wrong?
>
> Thanks!
>
> Nico
>
> ______________________________________________
> 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.
>