Skip to content

Loop through columns of outcomes

5 messages · Kuma Raj, Rui Barradas

#
Hello,

Use nested lapply(). Like this:



m1 <- lapply(varlist0,function(v) {
	lapply(outcomes, function(o){
		f <- sprintf("%s~ s(time,bs='cr',k=200)+s(temp,bs='cr') + 
Lag(%s,0:6)", o, v)
		gam(as.formula(f),family=quasipoisson,na.action=na.omit,data=df)
       })})

m1 <- unlist(m1, recursive = FALSE)
m1


Hope this helps,

Rui Barradas


Em 12-11-2013 09:53, Kuma Raj escreveu:
#
Thanks for the script which works perfectly. I am interested to do
model checking and also interested to extract the coefficients for
linear and spline terms. For model checkup I could run this script
which will give different plots to test model fit: gam.check(m2[[1]]).
Thanks to mnel from SO I could also extract the linear terms with the
following script:

m2 <- unlist(m1, recursive = FALSE)   ## unlist

First extract the model elements:

mod1<-m2[[1]]
mod2<-m2[[2]]
mod3<-m2[[3]]
mod4<-m2[[4]]
mod5<-m2[[5]]
mod6<-m2[[6]]

And run the following:

mlist <- list(mod1, mod2, mod3,mod4,mod5,mod6)  ##  Creates a list of models
names(mlist) <- list("mod1", "mod2", "mod3","mod4","mod5","mod6")

 slist <- lapply(mlist, summary)   ## obtain summaries

plist <- lapply(slist, `[[`, 'p.table')   ## list of the coefficients
linear terms

For 6 models this is relatively easy to do, but how could I shorten
the process if I have large number of models?

Thanks
On 12 November 2013 12:32, Rui Barradas <ruipbarradas at sapo.pt> wrote:
#
Hello,

Once again, use lapply.

mlist <- lapply(seq_along(m2), function(i) m2[[i]])
names(mlist) <- paste0("mod", seq_along(mlist))

slist <- lapply(mlist, summary)

plist <- lapply(slist, `[[`, 'p.table')


Hope this helps,

Rui Barradas

Em 12-11-2013 13:28, Kuma Raj escreveu:
#
Very helpful, many thanks.
On 12 November 2013 16:09, Rui Barradas <ruipbarradas at sapo.pt> wrote: