Griera
2015-Jul-13  13:33 UTC
[R-es] Conservar el nombre de la variable entre varias funciones
Hola:
Con esto del R me da la impresión que avanzo un paso y retrocedo dos!
El caso es que tengo una "cascada de funciones", para realizar un
análisis descriptivo "automático" en función del tipo de variable. Y
en los resultados, en lugar de aparecer el nombre de la variable, aparece el
nombre del argumento. Esto ocurre tanto si utilizo o no la función get().
Un ejemplo resumen reproducible:
============================# Con la función get()
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
Sin la función get():
============================# Sin la función get()
A <- function (XVD, XVI, XDATOS) 
  {
    attach(XDATOS)
    B(XVD, XVI)
    detach(XDATOS)
  }
B <- function (XVD, XVI)
  {
    TBL = xtabs(~XVD + XVI)
    print(TBL)
    print(summary(TBL))
  }
A(GRP, SE, DATOS)
La tabla que imprime és:> A(GRP, SE, DATOS)
   XVI
XVD H M
  A 0 2
  B 2 1
============================
Alguien puede orienter-me como solucionarlo y que en los resultados aperzca el
nombre de la variable en lugar del argumento de la función?
Muchas gracias y saludos.
Carlos Ortega
2015-Jul-13  18:56 UTC
[R-es] Conservar el nombre de la variable entre varias funciones
Hola, ¿Qué tipo de análisis quieres hacer? Porque de "fábrica" R ya viene con múltiples funciones para el cálculo de diferentes estadísticas descriptivas para todo tipo de variables. Saludos, Carlos Ortega www.qualityexcellence.es El 13 de julio de 2015, 15:33, Griera <griera en yandex.com> escribió:> Hola: > > Con esto del R me da la impresión que avanzo un paso y retrocedo dos! > > El caso es que tengo una "cascada de funciones", para realizar un análisis > descriptivo "automático" en función del tipo de variable. Y en los > resultados, en lugar de aparecer el nombre de la variable, aparece el > nombre del argumento. Esto ocurre tanto si utilizo o no la función get(). > > Un ejemplo resumen reproducible: > > ============================> # Con la función get() > 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 > > > > Sin la función get(): > ============================> # Sin la función get() > A <- function (XVD, XVI, XDATOS) > { > attach(XDATOS) > B(XVD, XVI) > detach(XDATOS) > } > > B <- function (XVD, XVI) > { > TBL = xtabs(~XVD + XVI) > print(TBL) > print(summary(TBL)) > } > A(GRP, SE, DATOS) > > La tabla que imprime és: > > A(GRP, SE, DATOS) > XVI > XVD H M > A 0 2 > B 2 1 > ============================> > > Alguien puede orienter-me como solucionarlo y que en los resultados > aperzca el nombre de la variable en lugar del argumento de la función? > > Muchas 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 [[alternative HTML version deleted]]
Griera-yandex
2015-Jul-14  09:17 UTC
[R-es] Conservar el nombre de la variable entre varias funciones
Hola:
Gracias por interesar-te per el problema!
Explico las líneas generales de lo que quiero hacer. La mayor parte de mi
trabajo es analizar datos de estudios ajenos. Hasta ahora lo hacia con SAS y
tengo una macro  que le paso el nombre del fichero y las variables y la macro
realiza, según si la variable es cualitativa o cuantitativa (no afino más el
tipo de variable):
- Descriptiva: 
   - Tabla de frecuencias para variables cualitativas.
   - Variables cuantitativas: estadísticos básicos, listado de los 5 casos
extremos (máximo y mínimo) y box-plot
- Análisis univariado con variable dependiente cualitativa:
  - Variables independientes cualitativas:
      - Tabla de contingencia con Chi2 i Fisher
      - Odds ratios
  - Variables independientes cuantitativas:
      - Estadísticos básicos según los valores de la variable dependiente.
      - Box-plot para cada categoría de la variable dependiente.
      - Prueba de Kruskal-Wallis
      - Odds ratio
- Análisis univariado con variable dependiente quantitiativa:
  - Variables independientes cualitativas:
      - Estadísticos i bosd plot de la var dependiente para cada categoría de la
independiente.
      - Test de Kruskal-Wallis.
  - Variables independientes cuantitativas:
      - Regresión lineal simple con los diagramas de dispersión.
Hace de forma "automática" alguna cosa más, pero no quiero cansarte.
Te envío al mail personal dos pdf con dos ejemplos, un análisis descriptivo y
una univariado como variable dependiente cualitativa.
En R estoy haciendo es enviar a una función el nombre de la tabla de datos, las
variables que no se han de analizar y el nombre de la variable dependiente si se
quiere un análisis univariado:
  La función DESUNI llama a la función DES (análisis descriptivo) y UNI
(análisis univariado). Éstas recorren los nombres de las variables de la tabla
de datos y según el tipo de variable independiente (numérica o factor) ejecuta
la función correspondiente. Adjunto al final como ejemplo las funciones DESUNI y
DES.
Con esto se genera una descriptiva básica y un análisis univariado básico que
permite conocer las variables del fichero y empezar a comentar con el
investigador que análisis realizar. El ahorro de tiempo es considerable.
Espero que se me haya entendido y disculpad esta respuesta tan larga.
Gracias por la ayuda y saludos.
============================================DESUNI = function(XDADES,
                  XDROP=NULL,
                  XVD=NULL,
                  XSPV=NULL # Si és una anàlisi de SPV # Pot tenir el valor TRUE
                  )
  {
  # Camí de les funcions
  XCAMIF="~/sys/utils/apps/r/r_funcions/"
  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")
      source(paste(XCAMIF, "des.r", sep=""))
      DES(XDADES=XDADES, XDROP=XDROP, XCAMIF=XCAMIF)
    }  
  ## Existeis VD: anàlisi univariat
  else               # Existeis VD: anàlisi univariat
    {
      source(paste(XCAMIF, "uni.r", sep=""))
      UNI(XDADES=XDADES, XDROP=XDROP, XVD=XVD, XSPV=XSPV, XCAMIF=XCAMIF)
    }
  }
============================================Funció DES:
DES = function(XDADES,  XDROP=NULL, XCAMIF)
  {
    ifelse(is.null(XDROP), DADES_S <- XDADES, DADES_S <- XDADES[,
setdiff(names(XDADES), XDROP) ])
    attach(DADES_S, warn.conflicts = F)
    XVARLLI=names(DADES_S)
    for (XVARNOM in names(DADES_S))
      {
        if(is.numeric(get(XVARNOM)))
          {
            source(paste(XCAMIF, "des_quanti.r", sep=""))
            DES_QUANTI (XVARNOM)
          }
        else if(is.factor(get(XVARNOM)))
          {
            source(paste(XCAMIF, "des_quali.r", sep=""))
            DES_QUALI (XVARNOM)
          }
      else
        {
          cat("La variable ", XVARNOM, "no és de cap dels tipus
coneguts", "\n")
        } 
      }    
    detach(DADES_S)
  }
============================================
On Mon, 13 Jul 2015 20:56:59 +0200
Carlos Ortega <cof en qualityexcellence.es> wrote:
> Hola,
> 
> ¿Qué tipo de análisis quieres hacer?
> Porque de "fábrica" R ya viene con múltiples funciones para el
cálculo de
> diferentes estadísticas descriptivas para todo tipo de variables.
> 
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
> 
> El 13 de julio de 2015, 15:33, Griera <griera en yandex.com>
escribió:
> 
> > Hola:
> >
> > Con esto del R me da la impresión que avanzo un paso y retrocedo dos!
> >
> > El caso es que tengo una "cascada de funciones", para
realizar un análisis
> > descriptivo "automático" en función del tipo de variable. Y
en los
> > resultados, en lugar de aparecer el nombre de la variable, aparece el
> > nombre del argumento. Esto ocurre tanto si utilizo o no la función
get().
> >
> > Un ejemplo resumen reproducible:
> >
> > ============================> > # Con la función get()
> > 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
> >
> >
> >
> > Sin la función get():
> > ============================> > # Sin la función get()
> > A <- function (XVD, XVI, XDATOS)
> >   {
> >     attach(XDATOS)
> >     B(XVD, XVI)
> >     detach(XDATOS)
> >   }
> >
> > B <- function (XVD, XVI)
> >   {
> >     TBL = xtabs(~XVD + XVI)
> >     print(TBL)
> >     print(summary(TBL))
> >   }
> > A(GRP, SE, DATOS)
> >
> > La tabla que imprime és:
> > > A(GRP, SE, DATOS)
> >    XVI
> > XVD H M
> >   A 0 2
> >   B 2 1
> > ============================> >
> >
> > Alguien puede orienter-me como solucionarlo y que en los resultados
> > aperzca el nombre de la variable en lugar del argumento de la función?
> >
> > Muchas 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
Possibly Parallel Threads
- Conservar el nombre de la variable entre varias funciones: ejemplos de resultados
- Pasar un listado de variables como argumento de una función
- Pasar un listado de variables como argumento de una función
- Loop for: mostrar el nombre de la variables
- Error sql en función