avsnitt 5, Ämne 10

Listor (lists)

Johan Svensson april 1, 2020
avsnitt Progress
0% färdig

Listor (lists) i R

Recall that an atomic vector can only store one type of data. If you attempt to create an atomic vector with different data types, it will be coerced (forced) into a data type that R finds appropriate. Let’s illustrate this by creating an atomic vector with a character string, numbers and booleans:

Erinra att en atomvektor bara kan lagra en typ av data. Om du försöker skapa en atomvektor med olika datatyper tvingas den till en datatyp som R finner lämplig. Låt oss illustrera detta genom att skapa en atomvektor med en teckensträng, siffror och logiska värden:

my_vector <- c("Jag älskar R", 1, 2, TRUE, FALSE)

# Se vektorns innehåll
mixed
## [1] "Jag älskar R" "1" "2" "TRUE" "FALSE"
# Undersök vilken klass objektet har
class(mixed)
## [1] "character"

Moreover, an atomic vector is only capable of storing one vector. Lists are R objects that solve these two problems; i.e they can store different types of data, stored in multiple R objects. Hence, lists are used to group together individual R objects. Lists are created using the list()function. Let’s create an R list with a numerical vector, a character vector and a boolean vector:

Dessutom kan en atomvektor endast lagra en vektor. Listor, som skapas med funktionen list(), är R-objekt som löser dessa två problem; de kan lagra olika typer av data, som är lagrat i flera R-objekt. En lista kan således innehålla flera data frames, som i sin tur innehåller många olika datatyper i kolumnerna (variablerna). Låt oss skapa en R-lista med en numerisk vektor, en teckenvektor och en boolesk vektor:

# Skapa en vektor (atomvektor)
my_numbers <- c(1, 2, 3)

my_charecters <- c("Diabetes", "Cancer", "AIDS", "Heart failure", "Arthritis", "Depression")

my_logicals <- c(TRUE, TRUE, FALSE, TRUE)

# Kombinera atomvektorer till lista
my_list <- list(my_numbers, my_charecters, my_logicals)

# Se listan
my_list
## [[1]]
## [1] 1 2 3
## 
## [[2]]
## [1] "Diabetes"      "Cancer"        "AIDS"          "Heart failure"
## [5] "Arthritis"     "Depression"   
## 
## [[3]]
## [1]  TRUE  TRUE FALSE  TRUE

Note that the length of the vectors stored in a list can have varying length and data type. Also note how the list is printed. Each object in the list is depicted with double-bracketed indexes (e.g [[1]]). Single-bracket indexes indicate the subelement being displayed.

Observera att längden på vektorerna som lagras i en lista kan variera och dessutom kan de innehålla olika datatyper. Observera också hur listan skrivs ut. Varje objekt i listan visas med index med dubbla parenteser (den första är [[1]]). Detta index visar vilket objekt i listan som visas.

  • [[1]][[2]] och [[3]] visar att listan innehåller tre objekt.

Det första listobjektet ([[1]]) lagrar värdena 1, 2 och 3. Det andra objektet ([[2]]) lagrar strängen med ”Diabetes”, ”Cancer”, ”AIDS” osv.

Listor är mycket flexibla, de kan faktiskt innehålla andra listor. Ett exempel följer:

# Skapa en vektor
my_numbers <- c(1, 2, 3)

# Skapa en lista
my_first_list <- list(c("A", "B", "C"), c(100, 200, 300))

# Skapa en lista som innehåller en lista och en vektor
my_second_list <- list(my_numbers, my_first_list)

# Granska resultat
my_second_list
## [[1]]
## [1] 1 2 3
## 
## [[2]]
## [[2]][[1]]
## [1] "A" "B" "C"
## 
## [[2]][[2]]
## [1] 100 200 300
0/5 (0 Reviews)