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.

La dimensión de X debe tener una longitud positiva en R para el promedio.

Quiero calcular el promedio de puntos o media para cada grupo, el código:

y <- factor(data[,4])
K<-length(levels(y)) 

K
    Xk <-list()
    Xk <- split(X,y)
    gk<-list()
        for (k in 1:K){
        gk[[k]]<-matrix(apply(Xk[[k]],2,mean),ncol=1)
     }

¿Cómo puedo evitar este error?

Error in apply(Xk[[k]], 2, mean) : dim(X) must have a positive length

Datos:

X1  X2  X3  grupo
7   26  84  "1"
9   28  84  "1"
8   27  81  "2"
10  23  81  "2"
11  25  80  "3"
12  24  79  "3"
13  29  78  "3"
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que el objeto Xk[[k]] no tiene dimensiones. Esto puede ser porque no hay observaciones pertenecientes a un grupo particular en el conjunto de datos, por lo que Xk[[k]] es una matriz vacía.

    Para evitar este error, puedes agregar una verificación para asegurarte de que Xk[[k]] no está vacío antes de calcular la media utilizando apply(). Una forma de hacer esto es modificar el bucle for de la siguiente manera:

    for (k in 1:K){
      if (nrow(Xk[[k]]) > 0) { # verificar si Xk[[k]] no está vacío
        gk[[k]] <- matrix(apply(Xk[[k]], 2, mean), ncol = 1)
      } else {
        gk[[k]] <- NA # o cualquier otro valor adecuado para indicar datos faltantes
      }
    }
    

    Este código verifica el número de filas en Xk[[k]] utilizando la función nrow(), y solo calcula la media si hay al menos una observación en el grupo. Si Xk[[k]] está vacío, el código asigna un valor NA a gk[[k]] o cualquier otro valor adecuado para indicar datos faltantes.

Comments are closed.