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

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 (<[email protected]>)
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
[email protected]
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

_______________________________________________
R-help-es mailing list
[email protected]
https://stat.ethz.ch/mailman/listinfo/r-help-es

Responder a