Yes, that did it. Thanks.

*Ben Caldwell*



On Fri, Jun 1, 2012 at 11:41 AM, Sarah Goslee <sarah.goslee@gmail.com>wrote:

> Hi,
>
> Look at this line:
>
> cross.val.error<-append(cross.val.error.temp,value.temp)
>
> at each iteration you're overwriting cross.val.error with
> cross.val.error.temp and value.temp
>
> You probably actually need something like
>
> cross.val.error.temp <- append(cross.val.error.temp,value.temp)
> print(cross.val.error.temp)
>
> But this is far from a small reproducible example, so you could need
> something else entirely.
>
> Sarah
>
> On Fri, Jun 1, 2012 at 2:23 PM, Benjamin Caldwell
> <btcaldwell@berkeley.edu> wrote:
> > Hello all,
> > *
> > *
> > I'm having some difficulty, and I think the problem is with how I'm using
> > append() nested inside a for loop. The data are:
> >
> > y,x
> > 237537.61,873
> > 5007.148438,227
> > 17705.77306,400
> > 12396.64369,427
> > 228703.4021,1173
> > 350181.9752,1538
> > 59967.79376,630
> > 140322.7774,710
> > 42650.07251,630
> > 5382.858702,264
> > 34405.82429,637
> > 92261.34614,980
> > 144927.1713,1094
> > 362998.7355,1420
> > 203313.6442,1070
> > 168861.649,930
> > 214306.5266,1040
> > 201804.5193,1000
> > 108426.1988,820
> > 181651.8748,980
> > 53675.45849,775
> > 43068.82972,563
> > 92393.35158,805
> > 93305.0618,740
> > 107308.4761,840
> > 139056.5446,775
> > 15411.81924,420
> > 16104.80991,390
> > 25629.07578,502
> > 37121.23438,461
> > 29711.42749,565
> > 33400.49145,510
> >
> > and the code is:
> >
> > xy<-read.csv(xy.csv)
> > x<-xy$x
> > y<-xy$y
> > cross.val.error.temp<-numeric(0)
> > b<-c(1:length(x))
> >
> > for(i in b){
> > frame.val.temp<-data.frame(x,y)
> > frame.val<-frame.val.temp[-i,]
> > yt<-frame.val$y
> > xt<-frame.val$x
> > temppow.val<-lm(log(yt)~log(xt))
> > tempint.val<-summary(temppow.val)$coefficients[1,1] #intercept of power
> > function
> > tempslope.val<-summary(temppow.val)$coefficients[2,1]
> > nls.model.val<-nls(yt~exp(intercept)*((xt)^slope),
> > start=list(intercept=tempint.val, slope=tempslope.val))
> > prediction.cross.val<-((exp(intercept.nls))*((x[i])^slope.nls))
> > value.temp<-(prediction.cross.val-y[i])/y[i]
> > cross.val.error<-append(cross.val.error.temp,value.temp)
> > cross.val.error
> > print(cross.val.error)
> > }
> > cross.val.error
> >
> > print() shows the values that I'm looking for, but I must be doing
> > something wrong with append because the call to cross.val.error just
> > returns the last value that the for loop returns. Would anyone be willing
> > to show me how to correct my mistake?
> >
> > As an aside, if anyone cares to explain how to make this work using
> lapply
> > instead of a for loop, I'm very interested.
> >
> > Many thanks for looking.
> >
> > *Ben Caldwell*
> >
>
>
>
> --
> Sarah Goslee
> http://www.functionaldiversity.org
>

	[[alternative HTML version deleted]]

