/ / ¿Cómo reestructurar un marco de datos en R? - r, marco de datos, estructura, media, matriz de datos

¿Cómo reestructurar un marco de datos en R? - r, dataframe, structure, mean, datamatrix

Tengo un marco de datos generado a través de una serie deFunciones que insertan matrices numéricas. La df consta de 156 variables con 4261 observaciones cada una. Estoy tratando de encontrar la media por columna, pero las funciones colMeans () dan el siguiente error:

> colMeans(results)
Error in if (inherits(X[[j]], "data.frame") && ncol(xj) > 1L) X[[j]] <- as.matrix(X[[j]]) :
missing value where TRUE/FALSE needed

Creo que tiene algo que ver con la estructura del marco de datos, por lo tanto, traté de alterarlo, pero eso dio otro error.

> str(results)
"data.frame":   4261 obs. of  156 variables:
$ r5.2.5     : num  0 0 0 0 0 0 0 0 0 0 ...
$ r10.2.5    :"data.frame":    4261 obs. of  1 variable:
..$ ret: num  0 0 0 0 0 0 0 0 0 0 ...
$ r20.2.5    :"data.frame":    4261 obs. of  1 variable:
..$ ret: num  0 0 0 0 0 0 0 0 0 0 ...
$ r30.2.5    :"data.frame":    4261 obs. of  1 variable:
..$ ret: num  0 0 0 0 0 0 0 0 0 0 ...
....

> results <- as.data.frame(as.numeric(results))
Error in as.data.frame(as.numeric(results)) :
(list) object cannot be coerced to type "double"
> results <- data.matrix(results)
Error in data.matrix(results) :
(list) object cannot be coerced to type "double"

Creo que una de las funciones que uso, crea marcos de datos y los adjunta al df existente, de ahí el "marco de datos" en la estructura de los arreglos.

¿Hay alguna forma en que pueda reestructurar el marco de datos a uno que pueda ejecutar funciones como colMeans () y colSums ()?

Respuestas

1 para la respuesta № 1

Parece que algunas de sus columnas son marcos de datos en sí mismos, necesita convertirlos de nuevo en vectores, así es como lo hace.

## get the columns in question

my_dfs <- sapply(results, function(x) is.data.frame(x))

## turn them into vectors

results[,my_dfs] <- sapply(results[,my_dfs], function(x) unlist(x))

### then you can do

my_means <- sapply(results, mean)