es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

mapply no muestra los nombres de las variables.

Estaba tratando de hacer algunas tablas de contingencia pero no sé cómo sacar los nombres de las columnas cuando uso la función mapply.

Este es un ejemplo de los datos:

set.seed(123)  ## para reproducibilidad
n <- 10
dat <- data.frame(balance=factor(paste("DM", 1:n)), 
                  credit_history=sample(c("pagado", "crítico"), 10, replace = TRUE),
                  purpose=sample(c("sí", "no"), 10, replace = TRUE),
                  employment_rate=sample(c("0-1 años", "1-4 años", ">4 años"), 10, replace = TRUE),
                  personal_status=sample(c("casado", "soltero"), 10, replace=TRUE),
                  other_debtors=sample(c("garante", "ninguno"), 10, replace = TRUE),
                  default=sample(c("sí", "no"), 10, replace = TRUE))

dt1 <- dat[ , c(1:6)]
dt2 <- dat[ , "default"]

mapply(function(x, y) table(x, y), dt1, MoreArgs=list(dt2))

El código anterior solo muestra “x” y “y” y me gustaría mostrar por ejemplo “default” y “balance”.
¿Alguien puede darme algún consejo?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para obtener los nombres de las columnas al usar la función mapply, puedes usar la función names para extraer los nombres de tus marcos de datos de entrada dt1 y dt2. Aquí tienes un ejemplo:

    set.seed(123) 
    
    n <- 10
    dat <- data.frame(balance=factor(paste("DM", 1:n)), 
                      credit_history=sample(c("repaid", "critical"), 10, replace = TRUE),
                      purpose=sample(c("yes", "no"), 10, replace = TRUE),
                      employment_rate=sample(c("0-1 yrs", "1-4 yrs", ">4 yrs"), 10, replace = TRUE),
                      personal_status=sample(c("married", "single"), 10, replace=TRUE),
                      other_debtors=sample(c("guarantor", "none"), 10, replace = TRUE),
                      default=sample(c("yes", "no"), 10, replace = TRUE))
    
    dt1 <- dat[ , c(1:6)]
    dt2 <- dat[ , "default"]
    
    # Obtén los nombres de las columnas para dt1 y dt2
    col_names_dt1 <- names(dt1)
    col_names_dt2 <- names(dt2)
    
    # Usa colnames en lugar de "x" e "y" en la función mapply
    mapply(function(col1, col2) table(dat[, col1], dat[, col2]), 
           col_names_dt1, col_names_dt2)
    

    Esto mostrará una lista de tablas de contingencia donde cada elemento está nombrado según los nombres de columna correspondientes de dt1 y dt2.

Comments are closed.