Lists are more powerful than vectors, because they can hold multiple types of things. A vector is a one-dimensional array of scalars, while a list is a one-dimensional array of objects. For example, this list contains a character vector, a numeric matrix, and a numeric vector:
> blah <- list(c("1","two","three","4"),matrix(c(1,2,3,4,5,6),nrow=2,ncol=3),c(1,7,17)) > blah [[1]]: [1] "1" "two" "three" "4" [[2]]: [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 [[3]]: [1] 1 7 17Selecting elements from a list requires two separate subscripts, unlike vectors (which need one) or matrices (which need a pair). The first subscript (in double brackets) tells which part of the list to select, and the second (in single brackets) tells which element of that part to select.
> blah[[1]] "1" "two" "three" "4" > blah[[1]][3] [1] "three" > blah[[2]][1:2,2] [1] 3 4Lists have a names attribute:
> names(blah) <- c("some.characters","a.matrix","some.numbers") > blah $some.characters: [1] "1" "two" "three" "4" $a.matrix: [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 $some.numbers: [1] 1 7 17Once you assign names to a list, you can select parts of the list using either the name or double brackets.
> blah$some.characters[4] [1] "4" > blah[[1]][4] [1] "4"