[R-es] Pasar un listado de variables como argumento de una función
Griera
griera en yandex.com
Mar Jul 7 11:16:52 CEST 2015
Hola:
Gracias de nuevo por la ayuda!
La solución, como no, funciona. Pero yo quería alguna cosa más flexible y universal que le pudiera pasar como parámetro diferentes opciones de incluir i excluir variables. Si estuviera fuera de la función seria:
=====================
DATOS <- data.frame(SE = c("M", "H", "M", "M", "H"),
EDAD = c(50, 60, 20, 18, 30),
GRP_S = c("B", "0", "B", "A", "B"),
HTA = c("N", "S", "N", "N", "N"))
# Excluir
DATOS_S <- subset(DATOS, select = -c(EDAD, GRP_S))
names(DATOS_S)
DATOS_S <- subset(DATOS, select = -c(SE, EDAD:GRP_S))
names(DATOS_S)
# Incluir
DATOS_S <- subset(DATOS, select = c(SE, GRP_S:HTA))
names(DATOS_S)
=====================
Pero cuando le paso a la función -c(EDAD, GRP_S)) o c(SE, GRP_S:HTA)), no funciona. Existe alguna solución que pueda incorporar esta flexibilidad?
Gracias Carlos y saludos.
On Tue, 7 Jul 2015 00:26:54 +0200
Carlos Ortega <cof en qualityexcellence.es> wrote:
> Hola,
>
> Puedes hacerlo de esta otra forma:
>
> #-----------------
> DES = function(XDATOS, XDROP) {
> #print(names(XDATOS))
> #print(XDROP)
> DATOS_S <- XDATOS[, setdiff(names(XDATOS), XDROP) ]
> return(DATOS_S)
> }
>
> DES(DATOS, c("EDAD", "GRP_S"))
> #-----------------
>
>
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
>
> El 6 de julio de 2015, 21:59, Griera <griera en yandex.com> escribió:
>
> > Hola:
> >
> > Quiero que una función realice una serie de cálculos pero eliminando las
> > variables que no interesan (diferentes según e fichero a analizar). Intento
> > pasar esta lista como argumento con un c("VAR1", "VAR2", etc), pero no lo
> > consigo. Un ejemplo seria:
> >
> > DATOS <- data.frame(SE=c("M", "H", "M", "M", "H"),
> > EDAD=c(50, 60, 20, 18, 30),
> > GRP_S=c("B", "0", "B", "A", "B"))
> > DES = function(XDATOS, XDROP=F)
> > {
> > print(names(XDATOS))
> > DATOS_S <- subset(XDATOS, select = -c(XDROP))
> > }
> >
> > Sin "" da el error:
> >
> > > DES(DATOS, c(EDAD, GRP_S))
> > [1] "SE" "EDAD" "GRP_S"
> > Error in print(XDROP) : object 'EDAD' not found
> >
> > Con "" da el error:
> >
> > > DES(DATOS, c("EDAD", "GRP_S"))
> > [1] "SE" "EDAD" "GRP_S"
> > [1] "EDAD" "GRP_S"
> > Error in -c(XDROP) : invalid argument to unary operator
> >
> > Alguien me puede echar una mano. Estoy bien perdido.
> >
> > Gracias y saludos!
> >
> > _______________________________________________
> > 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
Más información sobre la lista de distribución R-help-es