[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