Lista bidimensional en programación R

Una lista en R es básicamente un objeto R que contiene en su interior elementos que pertenecen a diferentes tipos de datos, que pueden ser strings de números o incluso otras listas. Básicamente, una lista puede contener otros objetos que pueden tener diferentes longitudes. La lista se define utilizando la función list() en R.
Una lista bidimensional se puede considerar como una «lista de listas». Una lista bidimensional se puede considerar como una array donde cada fila puede tener diferentes longitudes y admite diferentes tipos de datos.

Creación de listas bidimensionales

Las listas unidimensionales se pueden crear primero usando list()la función. Se pueden encerrar aún más en otra lista externa. La longitud de la lista externa es el número de listas internas que contiene, a las que se accede por length()función. La longitud de las diversas listas internas se puede calcular indexando usando la función de longitud (lista [[índice]]), donde se accede al índice correspondiente mediante [[ ]].

# list1 and list2 are uni-dimensional lists
list1 <- list (c(1:5), "hi", 0 + 5i)
list2 <- list(c(6:8))
  
# create a list_data with two lists as its elements
list_data <- list(list1, list2)
print ("The two-dimensional list is : ")
print (list_data)
  
cat("Length of nested list is : ", 
     length (list_data))
cat("Length of first inner list is : ", 
     length (list_data[[1]]))

Producción:

[1] "The two-dimensional list is : "
[[1]]
[[1]][[1]]
[1] 1 2 3 4 5

[[1]][[2]]
[1] "hi"

[[1]][[3]]
[1] 0+5i

[[2]]
[[2]][[1]]
[1] 6 7 8
Length of nested list is :  2
Length of first inner list is :  3

La primera lista contiene tres elementos, de diferentes tamaños y tipos de datos, una secuencia de números del 1 al 5, una string y un número complejo. La segunda lista contiene un vector de longitud tres que consta de los números del 6 al 8.

Acceso a listas anidadas

Se puede acceder a todos los elementos de la lista mediante un bucle for anidado. El ciclo externo se ejecuta hasta el número de elementos de la lista externa. El bucle interno se compone de las longitudes individuales de las listas internas.
El siguiente código R indica trabajar con listas bidimensionales:

# list1 and list2 are uni-dimensional lists
list1 <- list (c(1:5), "hi", 0 + 5i)
list2 <- list(c(6:8))
  
# create a list_data with two lists as its elements
list_data <- list(list1, list2)
  
# runs uptil the length of outer list
for (i in c(1 : length(list_data)))
{
    # runs uptil the length of inner lists at ith indices
    for (j in c(1: length(list_data[[i]])))
    { 
        cat ("List", i, "element", j, ": ")
        print (list_data[[i]][[j]])
    }
}

Producción:

List 1 element 1 : [1] 1 2 3 4 5
List 1 element 2 : [1] "hi"
List 1 element 3 : [1] 0+5i
List 2 element 1 : [1] 6 7 8

Eliminación o actualización de elementos

  • Eliminación o modificación de la lista
    interna Las listas internas se pueden modificar mediante un solo nivel de indexación. El elemento de la lista interna correspondiente se establece en un nuevo valor. Si el nuevo valor es igual a NULL, el elemento se elimina, de lo contrario se modifica.
  • Eliminación o actualización de elementos de listas internas
    Los elementos de las listas internas se pueden eliminar o modificar mediante un doble nivel de indexación. El elemento a modificar se establece en un nuevo valor. Si el valor es NULL, se elimina el elemento correspondiente. De lo contrario, modificado.

    Modificación de Listas
    Para la modificación de listas se utiliza el siguiente código R:

    # list1 and list2 are uni-dimensional lists
    list1 <- list (c(1:5), "hi", 0 + 5i)
    list2 <- list(c(6:8))
     
    # create a list_data with two lists as its elements
    list_data <- list(list1, list2)
    print ("The original list is : ")
    print (list_data)
     
    # modifying third component of first list
    list_data[[1]][[3]] = "you"
    print ("Modification 1")
    print (list_data)
     
    # modifying second inner list
    list_data[[2]] <- list (c(0:3))
    print ("Modification 2")
    print (list_data)

    Producción:

    [1] "The original list is : "
    [[1]]
    [[1]][[1]]
    [1] 1 2 3 4 5
    
    [[1]][[2]]
    [1] "hi"
    
    [[1]][[3]]
    [1] 0+5i
    
    
    [[2]]
    [[2]][[1]]
    [1] 6 7 8
    
    
    [1] "Modification 1"
    [[1]]
    [[1]][[1]]
    [1] 1 2 3 4 5
    
    [[1]][[2]]
    [1] "hi"
    
    [[1]][[3]]
    [1] “you”
    
    [[2]]
    [[2]][[1]]
    [1] 6 7 8
    
    
    [1] "Modification 2"
    [[1]]
    [[1]][[1]]
    [1] 1 2 3 4 5
    
    [[1]][[2]]
    [1] "hi"
    
    [[1]][[3]]
    [1] "you"
    
    
    [[2]]
    [[2]][[1]]
    [1] 0 1 2 3

    Eliminación de Listas
    El siguiente código R se utiliza para la eliminación de listas:

    # list1 and list2 are uni-dimensional lists
    list1 <- list (c(1:5), "hi", 0 + 5i)
    list2 <- list(c(6:8))
     
    # create a list_data with two lists as its elements
    list_data <- list(list1, list2)
    print ("The original list is : ")
    print (list_data)
     
    # deleting third component of first list
    list_data[[1]][[3]] = NULL
    print ("Modification 1")
    print (list_data)
     
    # deleting second inner list
    list_data[[2]] <- NULL
    print ("Modification 2")
    print (list_data)

    Producción:

    [1] "The original list is : "
    [[1]]
    [[1]][[1]]
    [1] 1 2 3 4 5
    
    [[1]][[2]]
    [1] "hi"
    
    [[1]][[3]]
    [1] 0+5i
    
    [[2]]
    [[2]][[1]]
    [1] 6 7 8
    
    [1] "Modification 1"
    [[1]]
    [[1]][[1]]
    [1] 1 2 3 4 5
    
    [[1]][[2]]
    [1] "hi"
    
    [[2]]
    [[2]][[1]]
    [1] 6 7 8
    
    [1] "Modification 2"
    [[1]]
    [[1]][[1]]
    [1] 1 2 3 4 5
    
    [[1]][[2]]
    [1] "hi"

    Después de la modificación 1, el tamaño de la lista interna se reduce en uno. Después de la modificación 2, la segunda lista interna se elimina y el tamaño de la lista externa se reduce en uno.

  • Publicación traducida automáticamente

    Artículo escrito por yippeee25 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 *