Hi Gustav,
Just change `summary(x)$coef` to `summary(x)$p.table`
I am pasting the code from the attachment.

library(gamair)  
library(mgcv) 
data(chicago)  
library(splines) 
 
chicago$date<-seq(from=as.Date("1987-01-01"), 
to=as.Date("2000-12-31"),length=5114) 
 
chicago$trend<-seq(dim(chicago)[1])  
names(chicago) [2] <-"pm10" 
names(chicago) [3] <-"pm25" 
names(chicago) [4] <-"ozone" 
names(chicago) [5] <-"so2" 
names(chicago) [7]   <-"temp" 
 
chicago$trend<-seq(dim(chicago)[1]) 
chicago$year<-as.numeric(format(chicago$date,"%Y"))  
chicago1<-subset(chicago, as.Date(date) < '1999-01-01')  
year<- matrix(1987:1998, ncol=3, byrow=TRUE) 

fun <-  
  function( y , x ){ 
    a <- gam( 
      death ~ pm10 + s(trend,k=35) , poisson , na.action = na.omit , data = x[ 
x$year %in% y , ] 
    ) 
    b<- gam( 
      death ~ ozone + s(trend,k=35), poisson , na.action = na.omit , data = x[ 
x$year %in% y , ] 
    ) 
    c<- gam ( 
      death ~ so2 + ns(trend,k=35) , poisson , na.action = na.omit , data = x[ 
x$year %in% y , ] 
    ) 
    list( a , b ,c) 
  } 

models<- apply(year, 1 , fun , x = chicago )

#solution
apply(1:length(models),function(i) lapply(models[[i]],function(x) 
summary(x)$p.table[2,]))[[1]] #1st list component
#[[1]]
#    Estimate   Std. Error      z value     Pr(>|z|) 
#6.054413e-04 1.474943e-04 4.104845e+00 4.045864e-05 
#
#[[2]]
#    Estimate   Std. Error      z value     Pr(>|z|) 
#0.0009999765 0.0003777224 2.6473846529 0.0081117027 

#[[3]]
#    Estimate   Std. Error      z value     Pr(>|z|) 
#5.643234e-03 9.023766e-04 6.253746e+00 4.007234e-10 

res<-lapply(1:length(models),function(i) 
do.call(rbind,lapply(models[[i]],function(x) 
summary(x)$p.table[row.names(summary(x)$p.table)%in%c("pm10","ozone","so2"),c(1:2,4)])))
 
 names(res)<-1:length(res) 
res1<- lapply(res,function(i) 
{row.names(i)<-c("pm10","ozone","so2");data.frame(i)})

library(abind)
res2<-abind(res1,along=1,hier.names=T)  #gives a matrix
colnames(res2)[2:3]<- c("Std.Error","Pr(>|z|)")

res3<- do.call(rbind,lapply(res,function(i) 
{row.names(i)<-c("pm10","ozone","so2");data.frame(i)}))
colnames(res3)[2:3]<- c("Std.Error","Pr(>|z|)")

 str(res2)
 #num [1:12, 1:3] 0.000605 0.001 0.005643 0.00059 0.000839 ...
 #- attr(*, "dimnames")=List of 2
 # ..$ : chr [1:12] "1.pm10" "1.ozone" "1.so2" "2.pm10" ...
 # ..$ : chr [1:3] "Estimate" "Std.Error" "Pr(>|z|)"

str(res3)
#'data.frame':    12 obs. of  3 variables:
# $ Estimate : num  0.000605 0.001 0.005643 0.00059 0.000839 ...
# $ Std.Error: num  0.000147 0.000378 0.000902 0.000172 0.000427 ...
 #$ Pr(>|z|) : num  4.05e-05 8.11e-03 4.01e-10 6.23e-04 4.96e-02 ...

res2
#            Estimate    Std.Error     Pr(>|z|)
#1.pm10  0.0006054413 0.0001474943 4.045864e-05
#1.ozone 0.0009999765 0.0003777224 8.111703e-03
#1.so2   0.0056432338 0.0009023766 4.007234e-10
#2.pm10  0.0005899052 0.0001724085 6.226404e-04
#2.ozone 0.0008389801 0.0004272480 4.956676e-02
#2.so2   0.0032899751 0.0009475318 5.163027e-04
#3.pm10  0.0005398889 0.0001551911 5.035438e-04
#3.ozone 0.0023890220 0.0004082119 4.845107e-09
#3.so2   0.0049121476 0.0008818088 2.539574e-08
#4.pm10  0.0009341888 0.0001760271 1.113999e-07
#4.ozone 0.0005461742 0.0004253987 1.991731e-01
#4.so2   0.0055712219 0.0011123419 5.484117e-07

Hope it helps.
A.K.






________________________________
From: Gustav Sigtuna <[email protected]>
To: arun <[email protected]> 
Sent: Sunday, February 17, 2013 5:49 AM
Subject: Re: Select components of a list


Dear Arun,

Thanks again. The script works perfectly for GLM. Strangely, it does not work 
for GAM, although it has the same output for the linear part. I cannot figure 
out the error message. I have attached the gam code and  error message .


Thanks




On Sun, Feb 17, 2013 at 3:11 AM, arun <[email protected]> wrote:

HI Gustav,
>
>If you need the combined output:
>res<-lapply(1:length(models),function(i) 
>do.call(rbind,lapply(models[[i]],function(x) 
>summary(x)$coef[row.names(summary(x)$coef)%in%c("pm10","ozone","so2"),c(1:2,4)])))
> names(res)<-1:length(res)
>res1<-do.call(rbind,lapply(res,function(i) 
>{row.names(i)<-c("pm10","ozone","so2");data.frame(i)}))
>names(res1)[2:3]<- c("Std.Error","Pr(>|z|)")
>res1
>#            Estimate    Std.Error     Pr(>|z|)
>#1.pm10  0.0005999185 0.0001486195 5.423004e-05
>#1.ozone 0.0010117294 0.0003792739 7.640816e-03
>#1.so2   0.0026595441 0.0009352046 4.457766e-03
>#2.pm10  0.0005720549 0.0001740368 1.012696e-03
>#2.ozone 0.0009128304 0.0004364390 3.647954e-02
>#2.so2   0.0028256121 0.0010150314 5.373144e-03
>#3.pm10  0.0005099552 0.0001559620 1.076462e-03
>#3.ozone 0.0023896044 0.0004109854 6.087769e-09
>#3.so2   0.0024097381 0.0009563814 1.174744e-02
>#4.pm10  0.0009285593 0.0001766520 1.468764e-07
>#4.ozone 0.0005455392 0.0004301502 2.047076e-01
>#4.so2   0.0017251400 0.0011635156 1.381552e-01
>A.K.
>
>
>
>
>
>
>
>________________________________
>From: Gustav Sigtuna <[email protected]>
>
>To: arun <[email protected]>
>Sent: Saturday, February 16, 2013 7:44 PM
>
>Subject: Re: Select components of a list
>
>
>Hi Arun,
>
>Thanks for taking your time to find a solution.
>
>I have attached a R script that will recreate a comparable list from publicly 
>available data. My list is longer and created by various models  than the one 
>created here. However, the final output is similar to the one produced by 
>script. My interest is to extract only the coefficients for  pm10., ozone and 
>so2 (  Estimate,  Std. Error  and p value)    . 
>
>Thanks
>
>
>
>
>
>
>On Fri, Feb 15, 2013 at 9:04 PM, arun <[email protected]> wrote:
>
>Dear Gustav,
>>Thank you for the data.  Could you select a smaller subset of the list and 
>>dput() that subset?  Your data is useful, but I would have to recreate list 
>>of lists from that to test and sometimes that may not accurate represent the 
>>format in your list as it is the summary().
>>Arun
>>
>>
>>
>>
>>
>>
>>
>>________________________________
>>From: Gustav Sigtuna <[email protected]>
>>To: [email protected]
>>Sent: Friday, February 15, 2013 4:56 AM
>>Subject: Re: Select components of a list
>>
>>
>>
>>Hi Arun,
>>
>>Thanks for your help. Your mail landed in my spam folder and just saw it by 
>>chance.
>>
>>I have attached a text file that contains the list of my model. It was 
>>extremely long, thus I took out the last part which is think is more 
>>important.
>>
>>
>>In brief I have an output from GAM model which resulted from analysis of  
>>ozone at three time points on 12 data sets
>>
>>Thanks for your assistance
>>
>>
>>
>>
>>
>>On Wed, Feb 13, 2013 at 8:21 PM, <[email protected]> wrote:
>>
>>Dear Lungo,
>>>
>>>If you can email ([email protected]) me the `list` (dput(list)), I can 
>>>take a look at it.  Probably, you understand that my previous solution was 
>>>just guesswork. With regards to GLM, GAM, it is good to check the structure 
>>>of the list (str()). It gives information about whether a `generic` tool 
>>>could be applied to extract them or not.
>>>Cheers.
>>>Arun
>>>
>>><quote author='Lungo'>
>>>Dear Arun,  Your code and the example works fine. However my list is quite
>>>different from the one showed in your example.   As I have shown in my
>>>question above I have 12 lists each having 3 lists underneath.  I get the
>>>lists by different models (GLM, GAM ) but the output  I aim to have is the
>>>estimates of the explanatory variable which is placed next to the intercept.
>>>Thus I am looking for a “generic” tool that would extract these lists.
>>></quote>
>>>Quoted from:
>>>http://r.789695.n4.nabble.com/Select-components-of-a-list-tp4658295p4658389.html
>>> 
>>
>

______________________________________________
[email protected] 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.

Reply via email to