Gracias Marcelino. Si, (i in 1:length(GT)), lo he utilizado mil veces, pero se me sigue olvidando de una vez a otra. Lo iba a mirar, pero me centré primero en que me hiciera bien el mapa.

He probado el for y me da este error:

Error in aes(x = lon, y = lat, color = get(GT[i]), size = 2) + scale_colour_gradient(low = ("white"), :
  non-numeric argument to binary operator




Quoting Marcelino De La Cruz Rot <[email protected]>:

Ten cuidado, porque empiezas el for como:

for(i in GT)

y luego el color del aes lo defines como:

color= GT[i]

Lo que, por ejemplo para el primer caso, se traduciría  en GT["var1"],
que, a no ser que GT tenga names , debería dar un error.

Yo creo que quieres decir

for(i in 1:length(GT))

...
color=get(GT[i])


El 12/12/2018 a las 18:21, Manuel Mendoza escribió:

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



--
Marcelino de la Cruz Rot
Depto. de Biología y Geología
Física y Química Inorgánica
Universidad Rey Juan Carlos
Móstoles España


--
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