[R-es] Función assign y paste0 en un loop
Isidro Hidalgo
ihidalgo en jccm.es
Mie Feb 4 11:20:24 CET 2015
¿Es posible que lo que busques sea la función get()?
Un saludo
Isidro Hidalgo Arellano
Observatorio Regional de Empleo
Consejería de Empleo y Economía
http://www.jccm.es
> -----Mensaje original-----
> De: R-help-es [mailto:r-help-es-bounces en r-project.org] En nombre de Isa
> García Barón
> Enviado el: miércoles, 04 de febrero de 2015 11:08
> Para: r-help-es en r-project.org
> Asunto: [R-es] Función assign y paste0 en un loop
>
> Hola, espero explicar bien el problema que tengo.
>
> Estoy intentando hacer loops para glm's. El problema vieneal nombrar
> cada glm de una manera y realizar la seleccion por AIC mediante la
> función step.
>
> Cuando realizo los glm utilizo las funcion assign y paste0, para
> nombrar a cada uno distinto:
>
> asssign(paste0("glm",i),glm(ap~V1+V2+V3+V4+V5,data=datos,family =
> binomial(link=logit)))
>
> Después, lo que pretendo es realizar la selección por AIC, mediante la
> función step para cada glm credo anteriormente y ahí viene el problema,
> no se cómo decirle que me haga el step para cada glm con cada nombre
> creado
> anteriormente:
>
> assign(paste0("glmstep",i),step("glm",i)
>
> Error: unexpected symbol in:
> "assign(paste0("glmstep",i),step("glm",i)
> todosres"
>
> Necesito hacer esto para extraer los coeficientes de todos los glm
> finales seleccionados, en esta parte supongo que también tendré el
> mismo problema...
>
> A continuación el script completo:
>
> nes <- read.csv('C:/Aegmon/nes.csv', sep=';', header=T)
>
> nreps=5
>
> #selecting all rows with presences
> index1=which(nes$ap==1)
> np=length(index1)
>
> #create object to holdall results of predicting the probability #of the
> observation left out
> todosres=matrix(0,nrow=nt,ncol=nreps)
>
> for (i in 1:np){
> datos=nesting[-index1[i],]
> datosp=datos[datos$ap==1,]
> datosa=datos[datos$ap==0,]
> ndatosa=nrow(datosa)
>
> for (j in 1:nreps) {
> datosarand=datosa[sample(ndatosa,size=np,replace=FALSE),]
> newsamp=rbind(datosp,datosarand)
> asssign(paste0("glm",i),glm(ap~V1+V2+V3+V4+V5,data = datos,family =
> binomial(link=logit)))
> save(list=paste0("glm",i),file=paste0("resultsglm/glm",i,".Rdata"))
> assign(paste0("glmstep",i),step("glm",i)
>
> todosres[,j]=predict.glm(object=glmtempstep,newdata=nes,type="response"
> )
> }
> }
>
> coeffsglm=matrix(0,nrow=nt,ncol=9)
> for (i in 1:nt){
>
> coeffsglm[j,]=as.numeric(eval(parse(text=paste0("glmstep",i,"$coefficie
> nts"))))
> }
>
>
> Espero haberme explicado bien, muchas gracias
>
> Un saludo
>
> [[alternative HTML version deleted]]
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
Más información sobre la lista de distribución R-help-es