Thanks. That helps. Using the example data you sent, I came up with this loop. See if it does the trick for you.
niter <- 2 nspp <- 11 ntrees <- 22 lnbm <- matrix(NA, niter, ntrees) for(i in 1:niter) { for(j in 1:ntrees) { k <- j1data$its==i & j1data$spp==predictdata$spp[j] lnbm[i, j] <- j1data$b0[k] + j1data$b1[k]*predictdata$lndbh[j] } } Jean P.S. You should cc rhelp on all correspondence, so other folks can see the messages unfold. On Tue, Mar 26, 2013 at 8:41 AM, Curtis Burkhalter < curtisburkhal...@gmail.com> wrote: > Hey Jean, > > Sorry for not including this before, here is the first 22 rows of j1data: > > its spp b0 b1 > 1 1 1 -1.707 2.124 > 2 1 2 -2.679 2.478 > 3 1 3 -1.103 1.984 > 4 1 4 -1.895 2.258 > 5 1 5 -1.372 2.127 > 6 1 6 -2.486 2.372 > 7 1 7 -2.261 2.336 > 8 1 8 -1.855 2.147 > 9 1 9 -1.923 2.264 > 10 1 10 -1.772 2.250 > 11 1 11 -2.540 2.272 > 12 2 1 -1.862 2.163 > 13 2 2 -2.189 2.329 > 14 2 3 -1.253 2.029 > 15 2 4 -2.533 2.443 > 16 2 5 -1.262 2.085 > 17 2 6 -2.800 2.483 > 18 2 7 -2.547 2.426 > 19 2 8 -1.853 2.155 > 20 2 9 -2.026 2.297 > 21 2 10 -1.966 2.297 > 22 2 11 -2.850 2.345 > > > and here is the first 22 rows of predictdata: > > spp dbh height bm lndbh dbh2 ln_h h2 logbm logdbh > 1 1 16.3 9.4 66.64 2.791165 265.69 2.240710 88.36 1.823735 1.212188 > 2 1 18.3 10.9 85.75 2.906901 334.89 2.388763 118.81 1.933234 1.262451 > 3 1 19.3 7.1 61.25 2.960105 372.49 1.960095 50.41 1.787106 1.285557 > 4 1 19.6 13.0 106.82 2.975530 384.16 2.564949 169.00 2.028653 1.292256 > 5 1 21.6 13.0 121.52 3.072693 466.56 2.564949 169.00 2.084648 1.334454 > 6 1 22.9 11.7 127.40 3.131137 524.41 2.459589 136.89 2.105169 1.359835 > 7 1 24.6 13.6 150.43 3.202746 605.16 2.610070 184.96 2.177334 1.390935 > 8 1 24.9 13.8 162.19 3.214868 620.01 2.624669 190.44 2.210024 1.396199 > 9 1 25.9 19.4 269.01 3.254243 670.81 2.965273 376.36 2.429768 1.413300 > 10 1 26.2 16.8 237.65 3.265759 686.44 2.821379 282.24 2.375938 1.418301 > 11 1 26.2 19.2 299.39 3.265759 686.44 2.954910 368.64 2.476237 1.418301 > 12 1 27.7 11.3 203.84 3.321432 767.29 2.424803 127.69 2.309289 1.442480 > 13 1 27.9 15.6 255.78 3.328627 778.41 2.747271 243.36 2.407867 1.445604 > 14 1 27.9 17.7 235.20 3.328627 778.41 2.873565 313.29 2.371437 1.445604 > 15 1 28.7 18.8 279.79 3.356897 823.69 2.933857 353.44 2.446832 1.457882 > 16 1 28.7 20.2 326.83 3.356897 823.69 3.005683 408.04 2.514322 1.457882 > 17 1 29.0 14.4 240.10 3.367296 841.00 2.667228 207.36 2.380392 1.462398 > 18 1 29.2 16.9 305.27 3.374169 852.64 2.827314 285.61 2.484684 1.465383 > 19 1 30.0 12.9 211.19 3.401197 900.00 2.557227 166.41 2.324673 1.477121 > 20 1 30.7 21.8 385.14 3.424263 942.49 3.081910 475.24 2.585619 1.487138 > 21 1 31.0 15.0 282.24 3.433987 961.00 2.708050 225.00 2.450619 1.491362 > 22 1 31.2 20.0 388.57 3.440418 973.44 2.995732 400.00 2.589469 1.494155 > > Also here is a little further clarification of what is happening when I > run the code and some abbreviated ouput: > > [,1] [,2] [,3] [,4] [,5] > [1,] 44.76950 58.23457 65.71707 68.06092 84.87327 > [2,] 44.76950 58.23457 65.71707 68.06092 84.87327 > [3,] 44.76950 58.23457 65.71707 68.06092 84.87327 > [4,] 44.76950 58.23457 65.71707 68.06092 84.87327 > [5,] 44.76950 58.23457 65.71707 68.06092 84.87327 > [6,] 44.76950 58.23457 65.71707 68.06092 84.87327 > [7,] 44.76950 58.23457 65.71707 68.06092 84.87327 > [8,] 44.76950 58.23457 65.71707 68.06092 84.87327 > [9,] 44.76950 58.23457 65.71707 68.06092 84.87327 > [10,] 44.76950 58.23457 65.71707 68.06092 84.87327 > [11,] 44.76950 58.23457 65.71707 68.06092 84.87327 > [12,] 88.23264 114.99591 129.88904 134.55690 168.07243 > [13,] 88.23264 114.99591 129.88904 134.55690 168.07243 > [14,] 88.23264 114.99591 129.88904 134.55690 168.07243 > [15,] 88.23264 114.99591 129.88904 134.55690 168.07243 > [16,] 88.23264 114.99591 129.88904 134.55690 168.07243 > [17,] 88.23264 114.99591 129.88904 134.55690 168.07243 > [18,] 88.23264 114.99591 129.88904 134.55690 168.07243 > [19,] 88.23264 114.99591 129.88904 134.55690 168.07243 > [20,] 88.23264 114.99591 129.88904 134.55690 168.07243 > [21,] 88.23264 114.99591 129.88904 134.55690 168.07243 > [22,] 88.23264 114.99591 129.88904 134.55690 168.07243 > > So it appears that it is calculating the same value for biomass 11x using > each iteration of the regression coefficients and then moves on. For the > predicted biomass located in [1,1] I know this is correct b/c I calculated > it by hand just to see if the code was working correctly. Moving beyond > that though the values contained within [1,2:5] are incorrect for the > corresponding trees and the subsequent values contained in [12:22,] are > incorrect so I know that it's not then using the 2nd iteration of the > regression coefficients for each tree. So to sum that up, it seems to work > correctly in predicting biomass for the first tree using the first > iteration of the regression coefficients, but beyond that something goes > wrong. I hope this helps in making my point clearer. > > Thank you > > > On Tue, Mar 26, 2013 at 8:33 AM, Adams, Jean <jvad...@usgs.gov> wrote: > >> It would be helpful to see what your data frames look like ... perhaps >> you could share the first few rows of each with us. >> >> dput(head(j1data)) >> >> dput(head(predictdata)) >> >> Jean >> >> >> On Mon, Mar 25, 2013 at 9:29 PM, Curtis Burkhalter < >> curtisburkhal...@gmail.com> wrote: >> >>> Hello, >>> >>> I'm working on a problem using nested for-loops and I don't know if it's >>> a >>> problem with the order of the loops or something within the loop so any >>> help with the problem would be appreciated. To briefly set up the >>> problem. >>> I have 259 trees (from 11 different species, of unequal count for each >>> species) of which I am trying to predict biomass. For each tree species >>> I >>> have 10000 iterations for the regression coefficients, which were >>> estimated >>> previously in WinBUGS, and what I'm trying to do is for each tree I want >>> to >>> predict the biomass using each species-specific iteration of the >>> regression >>> coefficients, so that ultimately each tree has 10000 estimates of >>> biomass, >>> organized into a 10000x259 matrix. The input data used in the model >>> equation is stored in two separate files and I don't think this is >>> creating >>> problems, but I thought it might be worth mentioning. I've pasted the >>> code >>> below and if any additional info is needed please write back and I will >>> post it. >>> >>> #read in the model output data from Jenkins eq. 1 under "data" >>> #read in the prediction data set under "predict data" >>> >>> j1data=read.delim("reduced_j1_forR.txt",header=T) >>> predictdata=read.delim("predictset_forR.txt",header=T) >>> j1data=j1data[,2:4] >>> its=c(rep(1:10000,each=11)) >>> j1data=cbind(its,j1data) >>> >>> #set up a matrix full of zeros "lnbm" where prediction results are placed >>> #set up for loop that first loops over iteration, then species >>> #(total iterations=10000it/spp*11spp=110000 iterations)and then over each >>> tree >>> #(total # of trees=259) >>> >>> niter=10000 >>> nspp=11 >>> ntrees=259 >>> >>> lnbm=matrix(0,10000,259) >>> k=numeric() >>> for (i in 1:ntrees) >>> { >>> for (j in 1:nspp) >>> { >>> for (m in 1:niter) >>> { >>> k=((j1data$its[m]-1)*1000)+(j1data$spp[j]) >>> #print(k) >>> lnbm[m,i]=j1data$b0[k]+j1data$b1[k]*predictdata$lndbh[i] >>> } >>> } >>> } >>> >>> >>> >>> Thanks >>> >>> [[alternative HTML version deleted]] >>> >>> ______________________________________________ >>> 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. >>> >> >> > > > -- > Curtis Burkhalter > [[alternative HTML version deleted]] ______________________________________________ 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.