[R-es] Conservar el nombre de la variable entre varias funciones: ejemplos de resultados

2015-07-15 Thread Griera
Hola:

Ayer me olvidé de señalar que el problema mayor que tengo es que al ejecutar la 
función UNI_VDQVIQ, en los resultados aparece el nombre del argumento que le 
paso a la función (get(XVDT) y XVARNOM  ), en lugar del nombre de la variable 
de la tabla de datos:

> library(MASS)
> data(birthwt, package="MASS")
> birthwt$low  <- factor(birthwt$low)
> birthwt$race <- factor(birthwt$race)
> DESUNI(XDADES=birthwt, XVD="low")

[borrado]

   Cell Contents
|-|
|   Count |
| Expected Values |
| Row Percent |
|-|

Total Observations in Table:  189 

 | XVARNOM 
   get(XVDT) |0  |1  | Row Total | 
-|---|---|---|
   0 |  130  |0  |  130  | 
 |89,42  |40,58  |   | 
 |   100,00% | 0,00% |68,78% | 
-|---|---|---|
   1 |0  |   59  |   59  | 
 |40,58  |18,42  |   | 
 | 0,00% |   100,00% |31,22% | 
-|---|---|---|
Column Total |  130  |   59  |  189  | 
-|---|---|---|



Es lo que pregunté inicialmente a la lista con el ejemplo reproducible:

A <- function (XVD, XVI, XDATOS) 
  {
attach(XDATOS)
B(XVD, XVI)
detach(XDATOS)
  }

B <- function (XVD, XVI)
  {
TBL = xtabs(~get(XVD) + get(XVI))
print(TBL)
print(summary(TBL))
  }

  
DATOS <- data.frame(SE=c("M", "H", "M", "M", "H"),
EDAD=c(50, 60, 20, 18, 30),
GRP=c("B", "B", "A", "A", "B"))
A("GRP", "SE", DATOS)

La tabla que imprime és:

get(XVI)
get(XVD) H M
   A 0 2
   B 2 1

Gracias y saludos!


 Beginning of forwarded message  
14.07.2015, 22:49, "Griera" :

Hola Carlos:

Te adjunto un ejemplo de aplicación: las funciones (he borrado los path de las 
funciones y las ordenes "source()" que las carga ) y un ejemplo para 
ejecutarlas para las opciones que tengo implementadas con la tabla de datos 
birthwt del paquete"MASS":
- Descriptiva de todas las variables de una tabla.
- Análisis univariado de todas las variables de una tabla cruzadas con una 
variable dependiente cualitativa.

=Inicio funciones 
##--
## DESUNI
##--
DESUNI = function(XDADES,
  XDROP=NULL,
  XVD=NULL,
  XSPV=NULL # Si és una anàlisi de SPV # Pot tenir el valor TRUE
  )
  {
  options(digits = 3, OutDec=",", scipen=999)
  ## No existeix VD: descriptiva
  if(is.null(XVD)) # No existeix VD: descriptiva
{
  cat("\n*** Descriptiva (no existeix variable dependent)\n")
  DES(XDADES=XDADES, XDROP=XDROP,
  XCAMIF=XCAMIF)
}
  ## Existeis VD: anàlisi univariat
  else # Existeis VD: anàlisi univariat
{
  UNI(XDADES=XDADES, XDROP=XDROP, XVD=XVD, XSPV=XSPV,
  XCAMIF=XCAMIF)
}
  }

##--
## DES: Descriptiva de todas las variables
##--
DES = function(XDADES, XDROP=NULL,
   XCAMIF)
  {
ifelse(is.null(XDROP), DADES_S <- XDADES, DADES_S <- XDADES[, 
setdiff(names(XDADES), XDROP) ]) # setdiff Selecciona les variables de XDADES 
que són diferents de XDROP
attach(DADES_S, warn.conflicts = F)
XVARLLI=names(DADES_S)
for (XVARNOM in names(DADES_S))
  {
  if(is.numeric(get(XVARNOM)))
{
DES_QUANTI (XVARNOM)
}
  else if(is.factor(get(XVARNOM)))
{
DES_QUALI (XVARNOM)
}
  else
{
cat("La variable ", XVARNOM, "no és de cap dels tipus coneguts", "\n")
}
  }
# Fi de la funció
detach(DADES_S)
  }
##--
## DES_QUANTI: Descriptiva variables factor
##--
DES_QUANTI <-
  function(X) {
OP <- par(no.readonly = TRUE); # save old parameters
par(mfrow=c(1,3))
hist(get(X), main=c("Histograma de", X), xlab=X);rug(get(X))
boxplot(get(X), main=c("Diagrama de caixa de", X), 
ylab=X);rug(get(X),side=2)
qqnorm(get(X), main=c("Diagrama Q-Q de", X));qqline(get(X))
cat("\n")
par(OP)
ESTA_1<-data.frame(Variable = X,
   N_total = length(get(X)),
   N_valids = sum(!is.na(get(X))),
   N_desconeguts = sum(is.na(get(X)))
   )
ESTA_2<-data.frame(Variable = X,
   N = sum(!is.na(get(X))),
   Mitjana = if (mean(get(X) > 10)) {round(mean(get(X), 
na.rm = TRUE), 2)} else {round

Re: [R-es] Conservar el nombre de la variable entre varias funciones: ejemplos de resultados

2015-07-14 Thread Griera
Hola Carlos:

Te adjunto un ejemplo de aplicación: las funciones (he borrado los path de las 
funciones y las ordenes "source()" que las carga ) y un ejemplo para 
ejecutarlas para las opciones que tengo implementadas con la tabla de datos 
birthwt del paquete"MASS":
- Descriptiva de todas las variables de una tabla.
- Análisis univariado de todas las variables de una tabla cruzadas con una 
variable dependiente cualitativa.

=Inicio funciones 
##--
## DESUNI
##--
DESUNI = function(XDADES,
  XDROP=NULL,
  XVD=NULL,
  XSPV=NULL # Si és una anàlisi de SPV # Pot tenir el valor TRUE
  )
  {
  options(digits = 3, OutDec=",", scipen=999)
  ## No existeix VD: descriptiva
  if(is.null(XVD))   # No existeix VD: descriptiva
{
  cat("\n*** Descriptiva (no existeix variable dependent)\n")
  DES(XDADES=XDADES, XDROP=XDROP,
  XCAMIF=XCAMIF)
}  
  ## Existeis VD: anàlisi univariat
  else   # Existeis VD: anàlisi univariat
{
  UNI(XDADES=XDADES, XDROP=XDROP, XVD=XVD, XSPV=XSPV,
  XCAMIF=XCAMIF)
}
  }

##--
## DES: Descriptiva de todas las variables
##--
DES = function(XDADES,  XDROP=NULL,
   XCAMIF)
  {
ifelse(is.null(XDROP), DADES_S <- XDADES, DADES_S <- XDADES[, 
setdiff(names(XDADES), XDROP) ]) # setdiff Selecciona les variables de XDADES 
que són diferents de XDROP
attach(DADES_S, warn.conflicts = F)
XVARLLI=names(DADES_S)
for (XVARNOM in names(DADES_S))
  {
  if(is.numeric(get(XVARNOM)))
{
DES_QUANTI (XVARNOM)
}
  else if(is.factor(get(XVARNOM)))
{
DES_QUALI (XVARNOM)
}
  else
{
cat("La variable ", XVARNOM, "no és de cap dels tipus coneguts", "\n")
} 
  }
# Fi de la funció   
detach(DADES_S)
  }
##--
## DES_QUANTI: Descriptiva variables factor
##--
DES_QUANTI <-
  function(X) {
OP <- par(no.readonly = TRUE); # save old parameters
par(mfrow=c(1,3))
hist(get(X),main=c("Histograma de", X), xlab=X);rug(get(X))
boxplot(get(X), main=c("Diagrama de caixa de", X), 
ylab=X);rug(get(X),side=2)
qqnorm(get(X),  main=c("Diagrama Q-Q de", X));qqline(get(X))
cat("\n")
par(OP)
ESTA_1<-data.frame(Variable  = X,
   N_total   = length(get(X)),
   N_valids  = sum(!is.na(get(X))),
   N_desconeguts = sum(is.na(get(X)))
   )
ESTA_2<-data.frame(Variable  = X,
   N = sum(!is.na(get(X))),
   Mitjana   = if (mean(get(X) > 10)) {round(mean(get(X), 
na.rm = TRUE), 2)} else {round(mean(get(X), na.rm = TRUE), 3)},
   Err_tipic = if (sd  (get(X) > 10)) {round(sd  (get(X), 
na.rm = TRUE), 2)} else {round(sd  (get(X), na.rm = TRUE), 3)},
   Min   = min(get(X), na.rm = TRUE),
   Perc_25   = quantile(get(X),.25), 
   Mediana   = median(get(X), na.rm = TRUE),
   Perc_75   = quantile(get(X),.75), 
   Max   = max(get(X), na.rm = TRUE),
   Interval  = max(get(X), na.rm = TRUE) - min(get(X), 
na.rm = TRUE)
   )
cat("", "\n")
cat("Valors valids i desconeguts", "\n")
print(ESTA_1, row.names = FALSE)  
cat("", "\n")
cat("Estadistics", "\n")
print(ESTA_2, row.names = FALSE)   
cat("", "\n")
return(summary(get(X)))
  }
##--
## DES_QUALI: Descriptiva variables factor
##--
DES_QUALI <- function(X)
  {
  cat("Var factor: ",X,"\n")
  XOUT <- as.data.frame(table(get(X)))
  names(XOUT)[1] = X
  XOUT <- transform(XOUT, cumFreq = cumsum(Freq), Percentatge = 
prop.table(Freq))
  print(XOUT)
  print("-")
  }
##--
## UNI: Análisis univarido
##--
UNI = function(XDADES,  XDROP=NULL,
   XVD,
   XSPV=NULL, # Si és una anàlisi de SPV
   XCAMIF
   )
  {
ifelse(is.null(XDROP), DADES_S <- XDADES, DADES_S <- XDADES[, 
setdiff(names(XDADES), XDROP) ])
attach(DADES_S, warn.conflicts = F)
cat("\n Descriptiva de totes les variables selecc

Re: [R-es] Conservar el nombre de la variable entre varias funciones: ejemplos de resultados

2015-07-14 Thread Carlos Ortega
Hola,

Gracias por el código.
Lo he ejecutado y he visto los resultados.

Salvo la parte de los test como te dije, todo lo demás creo que se puede
hacer más automático.
Probaré a hacer alguna prueba de lo que te comento utilizando el conjunto
de MASS.

Sobre la duda de los nombres, si le pasas el data.frame tal cual, te
debiera de conservar los nombres.
Si no es así, pásale como argumento adicional a las funciones los nombres
de las columnas/variables...

Saludos,
Carlos.


El 14 de julio de 2015, 22:49, Griera  escribió:

> Hola Carlos:
>
> Te adjunto un ejemplo de aplicación: las funciones (he borrado los path de
> las funciones y las ordenes "source()" que las carga ) y un ejemplo para
> ejecutarlas para las opciones que tengo implementadas con la tabla de datos
> birthwt del paquete"MASS":
> - Descriptiva de todas las variables de una tabla.
> - Análisis univariado de todas las variables de una tabla cruzadas con una
> variable dependiente cualitativa.
>
> =Inicio funciones 
> ##--
> ## DESUNI
> ##--
> DESUNI = function(XDADES,
>   XDROP=NULL,
>   XVD=NULL,
>   XSPV=NULL # Si és una anàlisi de SPV # Pot tenir el
> valor TRUE
>   )
>   {
>   options(digits = 3, OutDec=",", scipen=999)
>   ## No existeix VD: descriptiva
>   if(is.null(XVD))   # No existeix VD: descriptiva
> {
>   cat("\n*** Descriptiva (no existeix variable dependent)\n")
>   DES(XDADES=XDADES, XDROP=XDROP,
>   XCAMIF=XCAMIF)
> }
>   ## Existeis VD: anàlisi univariat
>   else   # Existeis VD: anàlisi univariat
> {
>   UNI(XDADES=XDADES, XDROP=XDROP, XVD=XVD, XSPV=XSPV,
>   XCAMIF=XCAMIF)
> }
>   }
>
> ##--
> ## DES: Descriptiva de todas las variables
> ##--
> DES = function(XDADES,  XDROP=NULL,
>XCAMIF)
>   {
> ifelse(is.null(XDROP), DADES_S <- XDADES, DADES_S <- XDADES[,
> setdiff(names(XDADES), XDROP) ]) # setdiff Selecciona les variables de
> XDADES que són diferents de XDROP
> attach(DADES_S, warn.conflicts = F)
> XVARLLI=names(DADES_S)
> for (XVARNOM in names(DADES_S))
>   {
>   if(is.numeric(get(XVARNOM)))
> {
> DES_QUANTI (XVARNOM)
> }
>   else if(is.factor(get(XVARNOM)))
> {
> DES_QUALI (XVARNOM)
> }
>   else
> {
> cat("La variable ", XVARNOM, "no és de cap dels tipus coneguts",
> "\n")
> }
>   }
> # Fi de la funció
> detach(DADES_S)
>   }
> ##--
> ## DES_QUANTI: Descriptiva variables factor
> ##--
> DES_QUANTI <-
>   function(X) {
> OP <- par(no.readonly = TRUE); # save old parameters
> par(mfrow=c(1,3))
> hist(get(X),main=c("Histograma de", X), xlab=X);rug(get(X))
> boxplot(get(X), main=c("Diagrama de caixa de", X),
> ylab=X);rug(get(X),side=2)
> qqnorm(get(X),  main=c("Diagrama Q-Q de", X));qqline(get(X))
> cat("\n")
> par(OP)
> ESTA_1<-data.frame(Variable  = X,
>N_total   = length(get(X)),
>N_valids  = sum(!is.na(get(X))),
>N_desconeguts = sum(is.na(get(X)))
>)
> ESTA_2<-data.frame(Variable  = X,
>N = sum(!is.na(get(X))),
>Mitjana   = if (mean(get(X) > 10))
> {round(mean(get(X), na.rm = TRUE), 2)} else {round(mean(get(X), na.rm =
> TRUE), 3)},
>Err_tipic = if (sd  (get(X) > 10)) {round(sd
> (get(X), na.rm = TRUE), 2)} else {round(sd  (get(X), na.rm = TRUE), 3)},
>Min   = min(get(X), na.rm = TRUE),
>Perc_25   = quantile(get(X),.25),
>Mediana   = median(get(X), na.rm = TRUE),
>Perc_75   = quantile(get(X),.75),
>Max   = max(get(X), na.rm = TRUE),
>Interval  = max(get(X), na.rm = TRUE) - min(get(X),
> na.rm = TRUE)
>)
> cat("", "\n")
> cat("Valors valids i desconeguts", "\n")
> print(ESTA_1, row.names = FALSE)
> cat("", "\n")
> cat("Estadistics", "\n")
> print(ESTA_2, row.names = FALSE)
> cat("", "\n")
> return(summary(get(X)))
>   }
> ##--
> ## DES_QUALI: Descriptiva variables factor
> ##--
> DES_QUALI <- function(X)
>   {
>   cat("Var factor: ",X,"\n")
>   XOUT

Re: [R-es] Conservar el nombre de la variable entre varias funciones: ejemplos de resultados

2015-07-15 Thread Griera
Hola Carlos:[Entre líneas] 15.07.2015, 00:18, "Carlos Ortega" :Hola,Gracias por el código. Lo he ejecutado y he visto los resultados.Salvo la parte de los test como te dije, todo lo demás creo que se puede hacer más automático.Probaré a hacer alguna prueba de lo que te comento utilizando el conjunto de MASS.Sobre la duda de los nombres, si le pasas el data.frame tal cual, te debiera de conservar los nombres.Si no es así, pásale como argumento adicional a las funciones los nombres de las columnas/variables... Había escrito un nuevo mail aclaratorio sin haber leído este. Olvida el último mail y pruebo estas dos cosas que dices. Muchas gracias y saludos   Saludos,Carlos. El 14 de julio de 2015, 22:49, Griera  escribió:Hola Carlos:  Te adjunto un ejemplo de aplicación: las funciones (he borrado los path de las funciones y las ordenes "source()" que las carga ) y un ejemplo para ejecutarlas para las opciones que tengo implementadas con la tabla de datos birthwt del paquete"MASS": - Descriptiva de todas las variables de una tabla. - Análisis univariado de todas las variables de una tabla cruzadas con una variable dependiente cualitativa.  =Inicio funciones  ##-- ## DESUNI ##-- DESUNI = function(XDADES,                   XDROP=NULL,                   XVD=NULL,                   XSPV=NULL # Si és una anàlisi de SPV # Pot tenir el valor TRUE                   )   {   options(digits = 3, OutDec=",", scipen=999)   ## No existeix VD: descriptiva   if(is.null(XVD))   # No existeix VD: descriptiva     {       cat("\n*** Descriptiva (no existeix variable dependent)\n")       DES(XDADES=XDADES, XDROP=XDROP,           XCAMIF=XCAMIF)     }   ## Existeis VD: anàlisi univariat   else               # Existeis VD: anàlisi univariat     {       UNI(XDADES=XDADES, XDROP=XDROP, XVD=XVD, XSPV=XSPV,           XCAMIF=XCAMIF)     }   }  ##-- ## DES: Descriptiva de todas las variables ##-- DES = function(XDADES,  XDROP=NULL,                XCAMIF)   {     ifelse(is.null(XDROP), DADES_S <- XDADES, DADES_S <- XDADES[, setdiff(names(XDADES), XDROP) ]) # setdiff Selecciona les variables de XDADES que són diferents de XDROP     attach(DADES_S, warn.conflicts = F)     XVARLLI=names(DADES_S)     for (XVARNOM in names(DADES_S))       {       if(is.numeric(get(XVARNOM)))         {         DES_QUANTI (XVARNOM)         }       else if(is.factor(get(XVARNOM)))         {         DES_QUALI (XVARNOM)         }       else         {         cat("La variable ", XVARNOM, "no és de cap dels tipus coneguts", "\n")         }       }     # Fi de la funció     detach(DADES_S)   } ##-- ## DES_QUANTI: Descriptiva variables factor ##-- DES_QUANTI <-   function(X) {     OP <- par(no.readonly = TRUE); # save old parameters     par(mfrow=c(1,3))     hist(get(X),    main=c("Histograma de", X), xlab=X);rug(get(X))     boxplot(get(X), main=c("Diagrama de caixa de", X), ylab=X);rug(get(X),side=2)     qqnorm(get(X),  main=c("Diagrama Q-Q de", X));qqline(get(X))     cat("\n")     par(OP)     ESTA_1<-data.frame(Variable      = X,                        N_total       = length(get(X)),                        N_valids      = sum(!is.na(get(X))),                        N_desconeguts = sum(is.na(get(X)))                        )     ESTA_2<-data.frame(Variable  = X,                        N         = sum(!is.na(get(X))),                        Mitjana   = if (mean(get(X) > 10)) {round(mean(get(X), na.rm = TRUE), 2)} else {round(mean(get(X), na.rm = TRUE), 3)},                        Err_tipic = if (sd  (get(X) > 10)) {round(sd  (get(X), na.rm = TRUE), 2)} else {round(sd  (get(X), na.rm = TRUE), 3)},                        Min       = min(get(X), na.rm = TRUE),                        Perc_25   = quantile(get(X),.25),                        Mediana   = median(get(X), na.rm = TRUE),                        Perc_75   = quantile(get(X),.75),                        Max       = max(get(X), na.rm = TRUE),                        Interval  = max(get(X), na.rm = TRUE) - min(get(X), na.rm = TRUE)                        )     cat("", "\n")     cat("Valors valids i desconeguts", "\n")     print(ESTA_1, row.names = FALSE)     cat("", "\n")     cat("Estadistics", "\n")     print(ESTA_2, row.names = FALSE)     cat("", "\n")     return(summary(get(X)))   } ##-- ## DES_QUALI: Descriptiva variables factor ##-- DES_QUALI <- function(X)   {   cat("Var factor: ",X,"\n")   XOUT <- as.data.f

Re: [R-es] Conservar el nombre de la variable entre varias funciones: ejemplos de resultados: solucionado

2015-07-15 Thread Griera
Hola:

On Wed, 15 Jul 2015 00:18:32 +0200
Carlos Ortega  wrote:
[borro]
> Sobre la duda de los nombres, si le pasas el data.frame tal cual, te
> debiera de conservar los nombres.

Tienes razón. Ahora le paso el nombre del data.frame, y ya muestra el nombre de 
la variable analizada.

Muchas gracias por la sugerencia. 

Saludos!

> Si no es así, pásale como argumento adicional a las funciones los nombres
> de las columnas/variables...
> 
> Saludos,
> Carlos.
> 
> 
> El 14 de julio de 2015, 22:49, Griera  escribió:
> 
> > Hola Carlos:
> >
> > Te adjunto un ejemplo de aplicación: las funciones (he borrado los path de
> > las funciones y las ordenes "source()" que las carga ) y un ejemplo para
> > ejecutarlas para las opciones que tengo implementadas con la tabla de datos
> > birthwt del paquete"MASS":
> > - Descriptiva de todas las variables de una tabla.
> > - Análisis univariado de todas las variables de una tabla cruzadas con una
> > variable dependiente cualitativa.
> >
> > =Inicio funciones 
> > ##--
> > ## DESUNI
> > ##--
> > DESUNI = function(XDADES,
> >   XDROP=NULL,
> >   XVD=NULL,
> >   XSPV=NULL # Si és una anàlisi de SPV # Pot tenir el
> > valor TRUE
> >   )
> >   {
> >   options(digits = 3, OutDec=",", scipen=999)
> >   ## No existeix VD: descriptiva
> >   if(is.null(XVD))   # No existeix VD: descriptiva
> > {
> >   cat("\n*** Descriptiva (no existeix variable dependent)\n")
> >   DES(XDADES=XDADES, XDROP=XDROP,
> >   XCAMIF=XCAMIF)
> > }
> >   ## Existeis VD: anàlisi univariat
> >   else   # Existeis VD: anàlisi univariat
> > {
> >   UNI(XDADES=XDADES, XDROP=XDROP, XVD=XVD, XSPV=XSPV,
> >   XCAMIF=XCAMIF)
> > }
> >   }
> >
> > ##--
> > ## DES: Descriptiva de todas las variables
> > ##--
> > DES = function(XDADES,  XDROP=NULL,
> >XCAMIF)
> >   {
> > ifelse(is.null(XDROP), DADES_S <- XDADES, DADES_S <- XDADES[,
> > setdiff(names(XDADES), XDROP) ]) # setdiff Selecciona les variables de
> > XDADES que són diferents de XDROP
> > attach(DADES_S, warn.conflicts = F)
> > XVARLLI=names(DADES_S)
> > for (XVARNOM in names(DADES_S))
> >   {
> >   if(is.numeric(get(XVARNOM)))
> > {
> > DES_QUANTI (XVARNOM)
> > }
> >   else if(is.factor(get(XVARNOM)))
> > {
> > DES_QUALI (XVARNOM)
> > }
> >   else
> > {
> > cat("La variable ", XVARNOM, "no és de cap dels tipus coneguts",
> > "\n")
> > }
> >   }
> > # Fi de la funció
> > detach(DADES_S)
> >   }
> > ##--
> > ## DES_QUANTI: Descriptiva variables factor
> > ##--
> > DES_QUANTI <-
> >   function(X) {
> > OP <- par(no.readonly = TRUE); # save old parameters
> > par(mfrow=c(1,3))
> > hist(get(X),main=c("Histograma de", X), xlab=X);rug(get(X))
> > boxplot(get(X), main=c("Diagrama de caixa de", X),
> > ylab=X);rug(get(X),side=2)
> > qqnorm(get(X),  main=c("Diagrama Q-Q de", X));qqline(get(X))
> > cat("\n")
> > par(OP)
> > ESTA_1<-data.frame(Variable  = X,
> >N_total   = length(get(X)),
> >N_valids  = sum(!is.na(get(X))),
> >N_desconeguts = sum(is.na(get(X)))
> >)
> > ESTA_2<-data.frame(Variable  = X,
> >N = sum(!is.na(get(X))),
> >Mitjana   = if (mean(get(X) > 10))
> > {round(mean(get(X), na.rm = TRUE), 2)} else {round(mean(get(X), na.rm =
> > TRUE), 3)},
> >Err_tipic = if (sd  (get(X) > 10)) {round(sd
> > (get(X), na.rm = TRUE), 2)} else {round(sd  (get(X), na.rm = TRUE), 3)},
> >Min   = min(get(X), na.rm = TRUE),
> >Perc_25   = quantile(get(X),.25),
> >Mediana   = median(get(X), na.rm = TRUE),
> >Perc_75   = quantile(get(X),.75),
> >Max   = max(get(X), na.rm = TRUE),
> >Interval  = max(get(X), na.rm = TRUE) - min(get(X),
> > na.rm = TRUE)
> >)
> > cat("", "\n")
> > cat("Valors valids i desconeguts", "\n")
> > print(ESTA_1, row.names = FALSE)
> > cat("", "\n")
> > cat("Estadistics", "\n")
> > print(ESTA_2, row.names = FALSE)
> > cat("", "\n")
> > return(summary(get(X)))
> >   }
> > ##--

Re: [R-es] Conservar el nombre de la variable entre varias funciones: ejemplos de resultados: solucion defmacro

2015-07-16 Thread Griera
Hola:

He probado otra solución: con defmacro del paquete gtools:

=
DATOS <- data.frame(SE=c("M", "H", "M", "M", "H"),
ED=c(50, 60, 20, 18, 30),
GRP=c("B", "B", "A", "A", "B"))
library(gtools)
MRL <- defmacro(XDADES, XVD, XVI, expr = 
  {
RL <- glm(XVD ~ XVI, family=binomial, data=XDADES)
print(summary(RL))
  
  })
=

Si se ejecuta aparecen los nombres reales de las variables y no el nombre de 
los argumentos:

=
> MRL(XDADES=DATOS, XVD=SE, XVI=ED)  

Call:
glm(formula = SE ~ ED, family = binomial, data = DATOS)

Deviance Residuals: 
  12345  
 1,3511  -0,7869   0,6512   0,6159  -1,5435  

Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept)  2,671702,60538   1,0250,305
ED  -0,061420,06326  -0,9710,332
[borrado]
=

En cambio en forma de función en los resultados aparece el nombre de los 
argumentos:

=
FRL <- function(XVD, XVI)
  {
RL <- glm(XVD ~ XVI, family=binomial)
print(summary(RL))
  }
FRL(XVD=SE, XVI=ED)  

Call:
glm(formula = XVD ~ XVI, family = binomial)

Deviance Residuals: 
  12345  
 1,3511  -0,7869   0,6512   0,6159  -1,5435  

Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept)  2,671702,60538   1,0250,305
XVI -0,061420,06326  -0,9710,332
[borrado]
=

Saludos!


On Wed, 15 Jul 2015 20:26:46 +0200
Griera  wrote:

> Hola:
> 
> On Wed, 15 Jul 2015 00:18:32 +0200
> Carlos Ortega  wrote:
> [borro]
> > Sobre la duda de los nombres, si le pasas el data.frame tal cual, te
> > debiera de conservar los nombres.
> 
> Tienes razón. Ahora le paso el nombre del data.frame, y ya muestra el nombre 
> de la variable analizada.
> 
> Muchas gracias por la sugerencia. 
> 
> Saludos!
> 
> > Si no es así, pásale como argumento adicional a las funciones los nombres
> > de las columnas/variables...
> > 
> > Saludos,
> > Carlos.
> > 
> > 
> > El 14 de julio de 2015, 22:49, Griera  escribió:
> > 
> > > Hola Carlos:
> > >
> > > Te adjunto un ejemplo de aplicación: las funciones (he borrado los path de
> > > las funciones y las ordenes "source()" que las carga ) y un ejemplo para
> > > ejecutarlas para las opciones que tengo implementadas con la tabla de 
> > > datos
> > > birthwt del paquete"MASS":
> > > - Descriptiva de todas las variables de una tabla.
> > > - Análisis univariado de todas las variables de una tabla cruzadas con una
> > > variable dependiente cualitativa.
> > >
> > > =Inicio funciones 
> > > ##--
> > > ## DESUNI
> > > ##--
> > > DESUNI = function(XDADES,
> > >   XDROP=NULL,
> > >   XVD=NULL,
> > >   XSPV=NULL # Si és una anàlisi de SPV # Pot tenir el
> > > valor TRUE
> > >   )
> > >   {
> > >   options(digits = 3, OutDec=",", scipen=999)
> > >   ## No existeix VD: descriptiva
> > >   if(is.null(XVD))   # No existeix VD: descriptiva
> > > {
> > >   cat("\n*** Descriptiva (no existeix variable dependent)\n")
> > >   DES(XDADES=XDADES, XDROP=XDROP,
> > >   XCAMIF=XCAMIF)
> > > }
> > >   ## Existeis VD: anàlisi univariat
> > >   else   # Existeis VD: anàlisi univariat
> > > {
> > >   UNI(XDADES=XDADES, XDROP=XDROP, XVD=XVD, XSPV=XSPV,
> > >   XCAMIF=XCAMIF)
> > > }
> > >   }
> > >
> > > ##--
> > > ## DES: Descriptiva de todas las variables
> > > ##--
> > > DES = function(XDADES,  XDROP=NULL,
> > >XCAMIF)
> > >   {
> > > ifelse(is.null(XDROP), DADES_S <- XDADES, DADES_S <- XDADES[,
> > > setdiff(names(XDADES), XDROP) ]) # setdiff Selecciona les variables de
> > > XDADES que són diferents de XDROP
> > > attach(DADES_S, warn.conflicts = F)
> > > XVARLLI=names(DADES_S)
> > > for (XVARNOM in names(DADES_S))
> > >   {
> > >   if(is.numeric(get(XVARNOM)))
> > > {
> > > DES_QUANTI (XVARNOM)
> > > }
> > >   else if(is.factor(get(XVARNOM)))
> > > {
> > > DES_QUALI (XVARNOM)
> > > }
> > >   else
> > > {
> > > cat("La variable ", XVARNOM, "no és de cap dels tipus coneguts",
> > > "\n")
> > > }
> > >   }
> > > # Fi de la funció
> > > detach(DADES_S)
> > >   }
> > > ##--
> > > ## DES_QUANTI: Descriptiva variables factor
> > > ##--
> > > DES_QUANTI <-
> >