calcular la media para cada columna de una matriz en R

Estoy trabajando en R in R studio. Necesito calcular la media para cada columna de un dataframe.

cluster1 // 5 by 4 data frame mean(cluster1) // 

Tengo :

  Warning message: In mean.default(cluster1) : argument is not numeric or logical: returning NA 

Pero puedo usar

  mean(cluster1[[1]]) 

para obtener la media de la primera columna.

¿Cómo obtener los medios para todas las columnas?

Cualquier ayuda sería apreciada.

    Puedes usar colMeans :

     ### Sample data set.seed(1) m < - data.frame(matrix(sample(100, 20, replace = TRUE), ncol = 4)) ### Your error mean(m) # [1] NA # Warning message: # In mean.default(m) : argument is not numeric or logical: returning NA ### The result using `colMeans` colMeans(m) # X1 X2 X3 X4 # 47.0 64.4 44.8 67.8 

    Puede usar ‘apply’ para ejecutar una función o las filas o columnas de una matriz o dataframe numéricos:

     cluster1 < - data.frame(a=1:5, b=11:15, c=21:25, d=31:35) apply(cluster1,2,mean) # applies function 'mean' to 2nd dimension (columns) apply(cluster1,1,mean) # applies function to 1st dimension (rows) sapply(cluster1, mean) # also takes mean of columns, treating data frame like list of vectors 

    En caso de que tengas NA:

     sapply(data, mean, na.rm = T) # Returns a vector (with names) lapply(data, mean, na.rm = T) # Returns a list 

    Recuerde que “mean” necesita datos numéricos. Si tiene datos de clases mixtas, use:

     numdata< -data[sapply(data, is.numeric)] sapply(numdata, mean, na.rm = T) # Returns a vector lapply(numdata, mean, na.rm = T) # Returns a list 

    Otra forma es usar el paquete purrr

     # example data like what is said above 

    @A Carretilla Y Mohair

     set.seed(1) m < - data.frame(matrix(sample(100, 20, replace = TRUE), ncol = 4)) library(purrr) means <- map_dbl(m, mean) > means # X1 X2 X3 X4 #47.0 64.4 44.8 67.8 

    Para la diversidad: Otra forma es convertir una función vectorial en una que funcione con marcos de datos usando plyr::colwise()

     set.seed(1) m < - data.frame(matrix(sample(100, 20, replace = TRUE), ncol = 4)) plyr::colwise(mean)(m) # X1 X2 X3 X4 # 1 47 64.4 44.8 67.8 

    Puedes intentar esto:

     mean(as.matrix(cluster1))