R – Listas

Una lista en R es un objeto genérico que consta de una colección ordenada de objetos. Las listas son estructuras de datos unidimensionales y heterogéneas. La lista puede ser una lista de vectores, una lista de arrays, una lista de caracteres y una lista de funciones, etc. 

Una lista es un vector pero con elementos de datos heterogéneos. Una lista en R se crea con el uso de la función list() . R permite acceder a elementos de una lista con el uso del valor de índice. En R, la indexación de una lista comienza con 1 en lugar de 0 como otros lenguajes de programación.  

Crear una lista

Para crear una Lista en R necesitas usar la función llamada “lista()”. En otras palabras, una lista es un vector genérico que contiene otros objetos. Para ilustrar cómo se ve una lista, tomamos un ejemplo aquí. Queremos construir una lista de empleados con los detalles. Entonces, para esto, queremos atributos como la identificación, el nombre del empleado y la cantidad de empleados. 

Ejemplo:  

R

# R program to create a List
  
# The first attributes is a numeric vector
# containing the employee IDs which is created
# using the command here
empId = c(1, 2, 3, 4)
  
# The second attribute is the employee name
# which is created using this line of code here
# which is the character vector
empName = c("Debi", "Sandeep", "Subham", "Shiba")
  
# The third attribute is the number of employees
# which is a single numeric variable.
numberOfEmp = 4
  
# We can combine all these three different
# data types into a list
# containing the details of employees
# which can be done using a list command
empList = list(empId, empName, numberOfEmp)
  
print(empList)

Producción: 

[[1]]
[1] 1 2 3 4

[[2]]
[1] "Debi"    "Sandeep" "Subham"  "Shiba"  

[[3]]
[1] 4

Acceder a los componentes de una lista

Podemos acceder a los componentes de una lista de dos maneras. 

  • Acceder a los componentes por nombres: todos los componentes de una lista se pueden nombrar y podemos usar esos nombres para acceder a los componentes de la lista usando el comando dólar.

Ejemplo: 

R

# R program to access
# components of a list
 
# Creating a list by naming all its components
empId = c(1, 2, 3, 4)
empName = c("Debi", "Sandeep", "Subham", "Shiba")
numberOfEmp = 4
empList = list(
  "ID" = empId,
  "Names" = empName,
  "Total Staff" = numberOfEmp
  )
print(empList)
 
# Accessing components by names
cat("Accessing name components using $ command\n")
print(empList$Names)

Producción:

$ID
[1] 1 2 3 4

$Names
[1] "Debi"    "Sandeep" "Subham"  "Shiba"  

$`Total Staff`
[1] 4

Accessing name components using $ command
[1] "Debi"    "Sandeep" "Subham"  "Shiba"  
  • Acceder a los componentes por índices: También podemos acceder a los componentes de la lista mediante índices. Para acceder a los componentes de nivel superior de una lista, debemos usar un operador de doble corte “ [[ ]] ”, que son dos corchetes y si queremos acceder a los componentes de nivel inferior o interno de una lista, debemos usar otro cuadrado corchete “ [ ] ” junto con el operador de doble corte “ [[ ]] “.

Ejemplo: 

R

# R program to access
# components of a list
 
# Creating a list by naming all its components
empId = c(1, 2, 3, 4)
empName = c("Debi", "Sandeep", "Subham", "Shiba")
numberOfEmp = 4
empList = list(
  "ID" = empId,
  "Names" = empName,
  "Total Staff" = numberOfEmp
  )
print(empList)
 
# Accessing a top level components by indices
cat("Accessing name components using indices\n")
print(empList[[2]])
 
# Accessing a inner level components by indices
cat("Accessing Sandeep from name using indices\n")
print(empList[[2]][2])
 
# Accessing another inner level components by indices
cat("Accessing 4 from ID using indices\n")
print(empList[[1]][4])

Producción:

$ID
[1] 1 2 3 4

$Names
[1] "Debi"    "Sandeep" "Subham"  "Shiba"  

$`Total Staff`
[1] 4

Accessing name components using indices
[1] "Debi"    "Sandeep" "Subham"  "Shiba"  
Accessing Sandeep from name using indices
[1] "Sandeep"
Accessing 4 from ID using indices
[1] 4

Modificar componentes de una lista

También se puede modificar una lista accediendo a los componentes y reemplazándolos por los que desee.

Ejemplo: 

R

# R program to edit
# components of a list
 
# Creating a list by naming all its components
empId = c(1, 2, 3, 4)
empName = c("Debi", "Sandeep", "Subham", "Shiba")
numberOfEmp = 4
empList = list(
  "ID" = empId,
  "Names" = empName,
  "Total Staff" = numberOfEmp
)
cat("Before modifying the list\n")
print(empList)
 
# Modifying the top-level component
empList$`Total Staff` = 5
 
# Modifying inner level component
empList[[1]][5] = 5
empList[[2]][5] = "Kamala"
 
cat("After modified the list\n")
print(empList)

Producción: 

Before modifying the list
$ID
[1] 1 2 3 4

$Names
[1] "Debi"    "Sandeep" "Subham"  "Shiba"  

$`Total Staff`
[1] 4

After modified the list
$ID
[1] 1 2 3 4 5

$Names
[1] "Debi"    "Sandeep" "Subham"  "Shiba"   "Kamala" 

$`Total Staff`
[1] 5

Concatenación de listas

Se pueden concatenar dos listas usando la función de concatenación. Entonces, cuando queremos concatenar dos listas, debemos usar el operador de concatenación.

Sintaxis:  

list = c(list, list1)
list = la lista original 
list1 = la nueva lista 

Ejemplo: 

R

# R program to edit
# components of a list
 
# Creating a list by naming all its components
empId = c(1, 2, 3, 4)
empName = c("Debi", "Sandeep", "Subham", "Shiba")
numberOfEmp = 4
empList = list(
  "ID" = empId,
  "Names" = empName,
  "Total Staff" = numberOfEmp
)
cat("Before concatenation of the new list\n")
print(empList)
 
# Creating another list
empAge = c(34, 23, 18, 45)
empAgeList = list(
  "Age" = empAge
)
 
# Concatenation of list using concatenation operator
empList = c(empList, empAgeList)
 
cat("After concatenation of the new list\n")
print(empList)

Producción: 

Before concatenation of the new list
$ID
[1] 1 2 3 4

$Names
[1] "Debi"    "Sandeep" "Subham"  "Shiba"  

$`Total Staff`
[1] 4

After concatenation of the new list
$ID
[1] 1 2 3 4

$Names
[1] "Debi"    "Sandeep" "Subham"  "Shiba"  

$`Total Staff`
[1] 4

$Age
[1] 34 23 18 45

Eliminación de componentes de una lista

Para eliminar componentes de una lista, en primer lugar, debemos acceder a esos componentes y luego insertar un signo negativo antes de esos componentes. Indica que tuvimos que borrar ese componente. 

Ejemplo: 

R

# R program to access
# components of a list
 
# Creating a list by naming all its components
empId = c(1, 2, 3, 4)
empName = c("Debi", "Sandeep", "Subham", "Shiba")
numberOfEmp = 4
empList = list(
  "ID" = empId,
  "Names" = empName,
  "Total Staff" = numberOfEmp
)
cat("Before deletion the list is\n")
print(empList)
 
# Deleting a top level components
cat("After Deleting Total staff components\n")
print(empList[-3])
 
# Deleting a inner level components
cat("After Deleting sandeep from name\n")
print(empList[[2]][-2])

Producción: 

Before deletion the list is
$ID
[1] 1 2 3 4

$Names
[1] "Debi"    "Sandeep" "Subham"  "Shiba"  

$`Total Staff`
[1] 4

After Deleting Total staff components
$ID
[1] 1 2 3 4

$Names
[1] "Debi"    "Sandeep" "Subham"  "Shiba"  

After Deleting sandeep from name
[1] "Debi"   "Subham" "Shiba" 

fusionando lista

Podemos fusionar la lista colocando todas las listas en una sola lista.

R

# Create two lists.
lst1 <- list(1,2,3)
lst2 <- list("Sun","Mon","Tue")
 
# Merge the two lists.
new_list <- c(lst1,lst2)
 
# Print the merged list.
print(new_list)

Producción:

[[1]]
[1] 1

[[2]]
[1] 2

[[3]]
[1] 3

[[4]]
[1] "Sun"

[[5]]
[1] "Mon"

[[6]]
[1] "Tue"

Conversión de lista a vector

Aquí vamos a convertir la lista en vector, para esto primero crearemos una lista y luego quitaremos la lista del vector.

R

# Create lists.
lst <- list(1:5)
print(lst)
 
# Convert the lists to vectors.
vec <- unlist(lst)
 
print(vec)

Producción:

[[1]]
[1] 1 2 3 4 5

[1] 1 2 3 4 5

R Lista a array

Crearemos arrays usando la función matrix() en la programación R. Otra función que se utilizará es la función unlist() para convertir las listas en un vector.

R

# Defining list
lst1 <- list(list(1, 2, 3),
            list(4, 5, 6))
 
# Print list
cat("The list is:\n")
print(lst1)
cat("Class:", class(lst1), "\n")
 
# Convert list to matrix
mat <- matrix(unlist(lst1), nrow = 2, byrow = TRUE)
 
# Print matrix
cat("\nAfter conversion to matrix:\n")
print(mat)
cat("Class:", class(mat), "\n")

Producción:

The list is:
[[1]]
[[1]][[1]]
[1] 1

[[1]][[2]]
[1] 2

[[1]][[3]]
[1] 3


[[2]]
[[2]][[1]]
[1] 4

[[2]][[2]]
[1] 5

[[2]][[3]]
[1] 6


Class: list 

After conversion to matrix:
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
Class: matrix 

Publicación traducida automáticamente

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