Foro de debate

Filtrar según criterios que tenga un vector

Filtrar según criterios que tenga un vector

de Franz Jimeno -
Número de respuestas: 2
Hola,

estoy intentando generar varias gráficas a partir de unos datos y con diferentes filtros que he creado de la siguiente manera:

#-----SNIP------SNIP-----SNIP------

Filtro <- Datos[Var1==1,]
generarGráfico(Filtro)
Filtro <- Datos[Var1==2 & Var2==3,]
generarGráfico(Filtro)
Filtro <- Datos[Var3!="Hombre"]
generarGráfico(Filtro)

#-----SNIP------SNIP-----SNIP------

Se me ha ocurrido realizar una iteración y almacenar los criterios del filtro en una lista, pero no sé cómo se puede hacer esto.

Debería ser algo así:

Filtros[1] <- "Var1==1"
Filtros[2] <- "Var1==2 & Var2==3"
Filtros[3] <- 'Var3!="Hombre"'

for filtro in Filtros {
  Datos.Filtro <- Datos[filtro,] #creo que hay que poner algo delante de "filtro"
  generaGráfico(Datos.Filtro)
}


Gracias de antemano

Franz
En respuesta a Franz Jimeno

Re: Filtrar según criterios que tenga un vector

de Antonio Jesús Arriaza Gómez -
Tal vez te ayude esta función, devuelve el conjunto de datos filtrados según el índice de entrada y el conjunto de datos que estemos usando.

filtro<-function(data,i){

if(i==1){
qq<-paste(data$var1==3)
ww<-as.logical(qq)
print(subset(data,subset=ww))
}

if(i==2){
qq<-paste(data$var3=="hombre")
ww<-as.logical(qq)
print(subset(data,subset=ww))
}

}


Un saludo, Antonio.
En respuesta a Antonio Jesús Arriaza Gómez

Re: Filtrar según criterios que tenga un vector

de Franz Jimeno -
Gracias, me parece una buena solución. Aunque mi duda iba más encaminada a cómo meter en una variable algún tipo de expresión que se pueda utilizar luego en el código. Si no recuerdo mal, existen lenguajes de programación que permiten hacer esto. Ahora mismo no me acuerdo donde lo vi.

comparacion = "sexo == mujer"

if ($comparacion) ...

normalmente es colocando algún símbolo delante de "comparación" (dentro del paréntesis del if). Yo he puesto un $, pero no se cual puede ser.

Se ha de cambiar $comparación por el texto "sexo==mujer" y ejecutar la comparación.

No se si me estoy explicando bien. Tampoco se si existe esta opción en R.

Un saludo