> list1 <- list(matrix(5:8,nrow=2,ncol=2),
+ c(T,F,T,F),
+ "String example",
+ data.frame(X = c(1,2,3),
+ Y = c(12,13,10))
+ )
> list1
[[1]]
[,1] [,2]
[1,] 5 7
[2,] 6 8
[[2]]
[1] TRUE FALSE TRUE FALSE
[[3]]
[1] "String example"
[[4]]
X Y
1 1 12
2 2 13
3 3 10
See the structure of the list -
> str(list1)
List of 4
$ : int [1:2, 1:2] 5 6 7 8
$ : logi [1:4] TRUE FALSE TRUE FALSE
$ : chr "String example"
$ :'data.frame': 3 obs. of 2 variables:
..$ X: num [1:3] 1 2 3
..$ Y: num [1:3] 12 13 10
> class(list1)
[1] "list"
> typeof(list1)
[1] "list"
> mode(list1)
[1] "list"
Number of elements in the list -
> length(list1)
[1] 4
> names(list1)
NULL
> names(list1) <- c('matrix','logical','string','dataframe')
> names(list1)
[1] "matrix" "logical" "string" "dataframe"
List names can also be defined while making the list:
> list1 <- list(a_matrix = matrix(5:8,nrow=2,ncol=2),
+ a_logical_vector = c(T,F,T,F),
+ a_string = "String example",
+ a_df = data.frame(X = c(1,2,3), Y = c(12,13,10))
+ )
> names(list1)
[1] "a_matrix" "a_logical_vector" "a_string" "a_df"
> list1[[1]]
[,1] [,2]
[1,] 5 7
[2,] 6 8
> list1[[2]]
[1] TRUE FALSE TRUE FALSE
> list1[[4]]
X Y
1 1 12
2 2 13
3 3 10
Or,
> list1$a_matrix
[,1] [,2]
[1,] 5 7
[2,] 6 8
> list1$a_logical_vector
[1] TRUE FALSE TRUE FALSE
> list1$a_df
X Y
1 1 12
2 2 13
3 3 10
Nesting:
> list1$a_df$Y
[1] 12 13 10
> list2 <- list1[c(2,4)]
> list2
$a_logical_vector
[1] TRUE FALSE TRUE FALSE
$a_df
X Y
1 1 12
2 2 13
3 3 10
> unlist(list1)
a_matrix1 a_matrix2 a_matrix3 a_matrix4
"5" "6" "7" "8"
a_logical_vector1 a_logical_vector2 a_logical_vector3 a_logical_vector4
"TRUE" "FALSE" "TRUE" "FALSE"
a_string a_df.X1 a_df.X2 a_df.X3
"String example" "1" "2" "3"
a_df.Y1 a_df.Y2 a_df.Y3
"12" "13" "10"
> model <- lm(qsec ~ wt, mtcars)
> str(model)
List of 12
$ coefficients : Named num [1:2] 18.875 -0.319
..- attr(*, "names")= chr [1:2] "(Intercept)" "wt"
$ residuals : Named num [1:32] -1.579 -0.938 0.475 1.591 -0.758 ...
..- attr(*, "names")= chr [1:32] "Mazda RX4" "Mazda RX4 Wag" "Datsun 710" "Hornet 4 Drive" ...
$ effects : Named num [1:32] -100.968 -1.738 0.811 1.817 -0.559 ...
..- attr(*, "names")= chr [1:32] "(Intercept)" "wt" "" "" ...
$ rank : int 2
$ fitted.values: Named num [1:32] 18 18 18.1 17.8 17.8 ...
..- attr(*, "names")= chr [1:32] "Mazda RX4" "Mazda RX4 Wag" "Datsun 710" "Hornet 4 Drive" ...
$ assign : int [1:2] 0 1
$ qr :List of 5
..$ qr : num [1:32, 1:2] -5.657 0.177 0.177 0.177 0.177 ...
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : chr [1:32] "Mazda RX4" "Mazda RX4 Wag" "Datsun 710" "Hornet 4 Drive" ...
.. .. ..$ : chr [1:2] "(Intercept)" "wt"
.. ..- attr(*, "assign")= int [1:2] 0 1
..$ qraux: num [1:2] 1.18 1.05
..$ pivot: int [1:2] 1 2
..$ tol : num 1e-07
..$ rank : int 2
..- attr(*, "class")= chr "qr"
$ df.residual : int 30
$ xlevels : Named list()
$ call : language lm(formula = qsec ~ wt, data = mtcars)
$ terms :Classes 'terms', 'formula' language qsec ~ wt
.. ..- attr(*, "variables")= language list(qsec, wt)
.. ..- attr(*, "factors")= int [1:2, 1] 0 1
.. .. ..- attr(*, "dimnames")=List of 2
.. .. .. ..$ : chr [1:2] "qsec" "wt"
.. .. .. ..$ : chr "wt"
.. ..- attr(*, "term.labels")= chr "wt"
.. ..- attr(*, "order")= int 1
.. ..- attr(*, "intercept")= int 1
.. ..- attr(*, "response")= int 1
.. ..- attr(*, ".Environment")=<environment: R_GlobalEnv>
.. ..- attr(*, "predvars")= language list(qsec, wt)
.. ..- attr(*, "dataClasses")= Named chr [1:2] "numeric" "numeric"
.. .. ..- attr(*, "names")= chr [1:2] "qsec" "wt"
$ model :'data.frame': 32 obs. of 2 variables:
..$ qsec: num [1:32] 16.5 17 18.6 19.4 17 ...
..$ wt : num [1:32] 2.62 2.88 2.32 3.21 3.44 ...
..- attr(*, "terms")=Classes 'terms', 'formula' language qsec ~ wt
.. .. ..- attr(*, "variables")= language list(qsec, wt)
.. .. ..- attr(*, "factors")= int [1:2, 1] 0 1
.. .. .. ..- attr(*, "dimnames")=List of 2
.. .. .. .. ..$ : chr [1:2] "qsec" "wt"
.. .. .. .. ..$ : chr "wt"
.. .. ..- attr(*, "term.labels")= chr "wt"
.. .. ..- attr(*, "order")= int 1
.. .. ..- attr(*, "intercept")= int 1
.. .. ..- attr(*, "response")= int 1
.. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv>
.. .. ..- attr(*, "predvars")= language list(qsec, wt)
.. .. ..- attr(*, "dataClasses")= Named chr [1:2] "numeric" "numeric"
.. .. .. ..- attr(*, "names")= chr [1:2] "qsec" "wt"
- attr(*, "class")= chr "lm"
> typeof(model)
[1] "list"
> mode(model)
[1] "list"
> class(model)
[1] "lm"
Selecting a list element from the model object -
> model$residuals
Mazda RX4 Mazda RX4 Wag Datsun 710 Hornet 4 Drive
-1.57932124 -0.93795553 0.47495441 1.59053207
Hornet Sportabout Valiant Duster 360 Merc 240D
-0.75767467 2.44870696 -1.89619411 2.14255504
Merc 230 Merc 280 Merc 280C Merc 450SE
5.02979179 0.52232533 1.12232533 -0.17665352
Merc 450SL Merc 450SLC Cadillac Fleetwood Lincoln Continental
-0.08514112 0.33081294 0.77986227 0.67538240
Chrysler Imperial Fiat 128 Honda Civic Toyota Corolla
0.25017499 1.29666467 0.16000218 1.61020004
Toyota Corona Dodge Challenger AMC Javelin Camaro Z28
1.92122118 -0.88214817 -0.47927007 -2.24004219
Pontiac Firebird Fiat X1-9 Porsche 914-2 Lotus Europa
-0.59844679 0.64210815 -1.49248020 -1.49254410
Ford Pantera L Ferrari Dino Maserati Bora Volvo 142E
-3.36382659 -2.49145906 -3.13619411 0.61173175