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
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
>
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
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 [[alternative HTML version deleted]]
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
--
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