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
spec...@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@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.
______________________________________________
R-help@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.