[R-es] Subset dentro de un for
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@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Subset dentro de un for
Hola, Puedes hacer el mítico eval parse paste: for (i in seq(1,maximo)){ eval(parse(text=paste('df',i,'<-subset(df, subset = var',i,'>0)',sep=''))) } Saludos. El 12/12/2018 14:08, Manuel Mendoza 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 ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Subset dentro de un for
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 () 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@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > -- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Subset dentro de un for
Hola, Manuel: Tienes que usar get: subset(df, subset=get(GT[1])>0) El 12/12/2018 a las 14:08, Manuel Mendoza 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 > > > > > > > > > > > > > > > > > > > > > > > > > > > . > -- 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 ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Subset dentro de un for
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 : 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 () 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@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 ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Subset dentro de un for
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 : > >> 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 >> () >> 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@r-project.org >>> 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 ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Subset dentro de un for
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 : 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 : 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 () 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@r-project.org 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 R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Subset dentro de un for
Ese error suena a que alguna de las variables fuese no numérica (factor o character). El 12/12/2018 a las 19:32, Manuel Mendoza escribió: > > 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 : > >> 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 : >>> 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 () 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@r-project.org > 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 > > -- 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 ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman
[R-es] Donde obtener tablas de datos ejemplo
Buenas tardes, donde puedo encontrar tablas de datos para trabajar con R las funciones de correlación de variables. [[alternative HTML version deleted]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Donde obtener tablas de datos ejemplo
?cor El El mié, 12 de dic. de 2018 a las 3:51 p. m., jorge della gaspera < jara...@gmail.com> escribió: > Buenas tardes, donde puedo encontrar tablas de datos para trabajar con R > las funciones de correlación de variables. > > [[alternative HTML version deleted]] > > ___ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > -- Sent from my phone. Please excuse my brevity and misspelling. [[alternative HTML version deleted]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Subset dentro de un for
Si, es lo primero que pensé, pero lo he comprobado y las 20 utilizadas para hacer el gradiente son numéricas. De hecho, si las pongo con su nombre, en vez de get(GT[i]), me hace bien el mapa. Quoting Marcelino De La Cruz Rot : Ese error suena a que alguna de las variables fuese no numérica (factor o character). El 12/12/2018 a las 19:32, Manuel Mendoza escribió: 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 : 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 : 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 () 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@r-project.org 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 -- 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 R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es