It will be better if you can give us a complete example of what you want to do. You start off with a typo in your for() command using "y" but then switching to "t" in the code. You also say the rows "all have different survival probabilities" but it is not clear where that fits into the picture (b/2, s2?). Your provided code will fail when the loop reaches t=100 because you will be referencing a column beyond the size of your matrix (i.e. pop[1, 101]).
Give us a reduced version of what you want to do, say 5 age categories (2 non-breeding, 3 breeding) and 5 years. It is likely that the looping can be reduced and the number of lines of code reduced, but you've left out too much for us to give you reasonable suggestions. Give us complete code for this toy version of what you are trying to do and it will be easier to see how to modify it for the bigger version. ---------------------------------------------- David L Carlson Associate Professor of Anthropology Texas A&M University College Station, TX 77843-4352 > -----Original Message----- > From: r-help-boun...@r-project.org [mailto:r-help-bounces@r- > project.org] On Behalf Of John Kane > Sent: Monday, February 18, 2013 10:50 AM > To: Sam Fowler; r-help@r-project.org > Subject: Re: [R] help with population matrix > > Currently your code does not seem to make any sense > ===comments in line==== > > John Kane > Kingston ON Canada > > > > -----Original Message----- > > From: s...@st-andrews.ac.uk > > Sent: Mon, 18 Feb 2013 16:09:49 +0000 > > To: r-help@r-project.org > > Subject: [R] help with population matrix > > > > Hi guys, I am a biologist and an R newbie, and I'm learning how to > create > > a > > simple population model. > > > > So, I have a population matrix ("pop")of 30 age classes of female > (1:4 > > are > > non-breeders, 5:30 are breeders) which will be modelled for 100 > years. > > > >> pop <- matrix(0,30,100) > > > > I then populate this matrix with 3 young adult females. > > > >> pop[5, 1] <- 3 > > What is this expected to do? > > > > I then want to run this for 100 years, with stochasticity, to see how > > this > > population does over time. > > > >> for (y in 1:100) { > >> pop[1,t+1] <- rbinom(1,colSums(pop[5:30, t]), b/2) > > > > (I haven't filled these in but you don't need them, they all have > > different > > survival probabilities to the sexually-mature adults.) > > > >> pop[5, t+1] <- rbinom(1, pop[4, t], s2) > >> pop[6, t+1] <- rbinom(1, pop[5, t], s2) > > ..... > >> pop[30, t+1] <- rbinom(1, pop[29, t], s2) > > } > > > What is t , s2 b etc? > > > > > So my question is: is there any way of populating this matrix without > > having to explicitly write 30 lines of code? Because lines 5 - 30 are > all > > going to be the same, and yet even after 5 hours (literally) of web > > searching and R manual reading I can't find a way to index the rows, > > which > > seems to be what's needed here. > > > > Any insight is welcome here, including a different way of modelling > this > > population. > > Many thanks, Sam. > > This may be one of the cases where it really is better to have some > detailed explanation of what you want rather than how to code it. > > ____________________________________________________________ > FREE 3D MARINE AQUARIUM SCREENSAVER - Watch dolphins, sharks & orcas on > your desktop! > > ______________________________________________ > 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.