[R-es] Subset dentro de un for

Marcelino De La Cruz Rot m@rcelino@del@cruz @ending from urjc@e@
Mie Dic 12 20:37:49 CET 2018


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



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