[R-es] Subset dentro de un for

Manuel Mendoza mmendoz@ @ending from mncn@c@ic@e@
Mie Dic 12 18:21:02 CET 2018


Gracias a los tres, Raúl, Marcelino y Carlos.

Lo del "get" de Marcelino me da la respuesta a lo que yo exactamente  
preguntaba, y funciona, pero ahora tengo problemas con el for, por lo  
que probablemente recurra al eval parse de Raúl o Carlos, que ya  
tienen el for. Aún así, lo intento 1º con el get.

Con subset(df, subset=get(GT[i])>0) el problema es que en el for hago  
un ggplot cuyo color es = a la variable que condiciona el subset, y no  
funciona poniendo GT[i] (como se ve abajo). Pretendo que me haga 20  
mapas, cada uno de acuerdo a una de las 20 variables de GT.

GT<- c("var1","var2", … "var20")

for(i in GT) {

df2<-subset(df1, subset=get(GT[i])>0)

windows();print(ggplot(legend=FALSE)+geom_path( data=world,  
aes(x=long, y=lat,group=group))+
          
theme(panel.background=element_blank())+theme(panel.grid.major =  
element_blank())+
         theme(panel.grid.minor =  
element_blank())+theme(axis.text.x=element_blank(),axis.text.y=element_blank())+
         theme(axis.ticks = element_blank())+xlab("") + ylab("")+
         geom_point(data=df2,aes(x=lon,y=lat,

         color= GT[i],size=2) +

          
scale_colour_gradient(low=("white"),high=("red"),guide="colourbar",limits=c(0,max))+
         geom_path(data=map_data('world'), aes(x=long, y=lat,group=group))+
         labs(title =  paste("5026 Minimum number of IFd species to go  
extinct"))))

}








Quoting Carlos Ortega <cof using qualityexcellence.es>:

> Esta es una forma...
>
>> for(i in c('Ozone', 'Solar.R')) {
> +   print(i)
> +   sub_data <- subset(airquality, eval(parse(text=i)) < 100)
> +   res_ult <- mean(sub_data$Temp, na.rm = TRUE)
> +   print(res_ult)
> + }
> [1] "Ozone"
> [1] 77.34862
> [1] "Solar.R"
> [1] 71.85294
>
> Y otra forma à la dplyr...:
>
>> library(rlang)
>> for(i in c('Ozone', 'Solar.R')) {
> +   print(i)
> +   res_ult <- airquality %>%
> +     filter(!!sym(i) < 100) %>%
> +     summarize(Media = mean(Temp, na.rm = TRUE))
> +   print(res_ult)
> + }
> [1] "Ozone"
>      Media
> 1 77.34862
> [1] "Solar.R"
>      Media
> 1 71.85294
>
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
>
>
> El mié., 12 dic. 2018 a las 14:09, Manuel Mendoza (<mmendoza using mncn.csic.es>)
> escribió:
>
>> Muy buenas.  Quiero hacer un loop en el que en cada iteración se hace
>> un subset con el que se queda con las muestras para la que cierta
>> variable es positiva.
>>
>> Si hago esto, sale bien:
>>
>> df2<-subset(df, subset = var1>0)
>>
>>
>> Pero he probado así (y de no sé cuantas formas más), antes de hacer el
>> for, y no sale:
>>
>> GT<- c("var1","var2", … )
>>
>> df2<-subset(df, subset=(GT[1]>0))
>>
>> Gracias,
>> Manuel
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> .
>>
>> --
>> Dr Manuel Mendoza
>> Department of Biogeography and Global Change
>> National Museum of Natural Science (MNCN)
>> Spanish Scientific Council (CSIC)
>> C/ Serrano 115bis, 28006 MADRID
>> Spain
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es using r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es


-- 
Dr Manuel Mendoza
Department of Biogeography and Global Change
National Museum of Natural Science (MNCN)
Spanish Scientific Council (CSIC)
C/ Serrano 115bis, 28006 MADRID
Spain



Más información sobre la lista de distribución R-help-es