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 <marcelino.delacruz en urjc.es>:> 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 <cof en 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 en 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 en 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
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 <marcelino.delacruz en urjc.es>: > >> 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 <cof en 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 en 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 en 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
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 <marcelino.delacruz en urjc.es>:> 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 <marcelino.delacruz en urjc.es>: >> >>> 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 <cof en 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 en 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 en 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