Convierta la lista en marco de datos con nombres de columna específicos en R

Una lista contiene diferentes tipos de objetos como sus componentes. Los componentes pueden pertenecer a diferentes tipos de datos o diferentes dimensiones. Los vectores pueden ser componentes útiles de una lista y se pueden asignar fácilmente como filas o columnas de un marco de datos. Se hace referencia a cada columna del marco de datos mediante un nombre único, que puede ser equivalente a los nombres de los componentes de las listas o asignarse explícitamente. En este artículo, discutiremos cómo convertir una lista en un marco de datos con nombres de columna específicos en el lenguaje de programación R.

Conversión con datos de lista en forma de filas

El método do.call() en R construye y ejecuta una llamada de función a partir de un nombre o una función y una lista de argumentos que se pasarán durante la llamada de función. 

Sintaxis: do.call (diversión, argumentos)

Argumentos: 

  • fun – El nombre de la función a ejecutar
  • args – lista de argumentos para la llamada a la función

El método rbind() se usa como diversión durante esta llamada de función, que vincula los elementos pasados ​​de la lista como filas del marco de datos. Las filas se nombran según los componentes correspondientes de la lista. Por lo tanto, el argumento del método do.call() es el objeto de lista. Los nombres de las columnas se pueden modificar usando el método colnames() en R, que asigna los nombres de las columnas al vector asignado. En caso de que la longitud del vector de nombres de columna sea más pequeña, se asigna NA como el nombre de columna respectivo. Los nombres de las columnas se conservan en el objeto del marco de datos original. El número de columnas en el marco de datos es equivalente al tamaño de cada componente en la lista. 

do.call ( rbind , list)

El método as.data.frame() se utiliza para asignar el objeto a un marco de datos que consta de filas y columnas. 

R

# declaring a list object
lst_obj <- list(row1 = 1 : 5,
                row2 = LETTERS[1 : 5],
                row3 = FALSE)
 
print ("Original List")
print (lst_obj)
 
# binding columns together
df <- do.call(rbind, lst_obj)
print ("Original dataframe")
 
# converting to a dataframe
data_frame <- as.data.frame(df)
print (data_frame)
 
print ("Modified dataframe")
colnames(data_frame) <- c(
  "ColA", "ColB", "ColC", "ColD", "ColE")
 
print (data_frame)

Producción:

[1] "Original List"
$col1
[1] 1 2 3 4 5

$col2
[1] "A" "B" "C" "D" "E"

$col3
[1] FALSE
[1] "Original dataframe"
        V1    V2    V3    V4    V5
row1     1     2     3     4     5
row2     A     B     C     D     E
row3 FALSE FALSE FALSE FALSE FALSE

[1] "Modified dataframe"
     ColA  ColB  ColC  ColD  ColE
row1     1     2     3     4     5
row2     A     B     C     D     E
row3 FALSE FALSE FALSE FALSE FALSE

Los nombres de las columnas también se pueden asignar al marco de datos en función de la denominación de los elementos dentro del objeto de la lista. La denominación se asigna incluso si se asignan nombres a cualquiera de los componentes del vector. 

R

# declaring a list object
lst_obj <- list("Row 1" = c(col1 = 'a', col2 = 'b',
                            col3 = 'c'),
                "Row 2" = c(col1 = 'd', col2 = 'e',
                            col3 = 'f'))
 
print ("Original List")
print (lst_obj)
 
# binding columns together
df <- do.call(rbind, lst_obj)
print ("dataframe")
 
# converting to a dataframe
data_frame <- as.data.frame(df)
print (data_frame)

Producción:

[1] "Original List"
$`Row 1`
col1 col2 col3
"a"  "b"  "c"

$`Row 2`
col1 col2 col3
"d"  "e"  "f"

[1] "dataframe"
     col1 col2 col3
Row 1    a    b    c
Row 2    d    e    f

Conversión con datos de lista en forma de columnas

Se puede hacer usando el método cbind() y do.call().

do.call ( cbind , list)

Se mantienen las siguientes propiedades: 

  • Los nombres asignados a los componentes de la lista se convierten en nombres de columna, que se pueden modificar mediante el método colnames().
  • El número total de filas es equivalente a la longitud de los componentes.
  • Los nombres de fila se asignan a los números de fila.

Código:

R

# declaring a list object
lst_obj <- list(col1 = 1 : 5,
                col2 = LETTERS[1 : 5],
                col3 = FALSE)
 
print ("Original List")
print (lst_obj)
 
# binding columns together
df <- do.call(cbind, lst_obj)
print ("dataframe")
 
# converting to a dataframe
as.data.frame(df)

Producción

[1] "Original List"
$col1
[1] 1 2 3 4 5

$col2
[1] "A" "B" "C" "D" "E"

$col3
[1] FALSE


[1] "dataframe"
 col1 col2  col3
1    1    A FALSE
2    2    B FALSE
3    3    C FALSE
4    4    D FALSE
5    5    E FALSE

Publicación traducida automáticamente

Artículo escrito por yashkumar0457 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *