When using R, you will frequently encounter the six basic
vector types. R includes several different ways to create a new vector.
The simplest one is the c
function,
which combines its arguments into a vector:
> # a vector of five numbers > v <- c(.295, .300, .250, .287, .215) > v [1] 0.295 0.300 0.250 0.287 0.215
The c
function also coerces all of its arguments into
a single type:
> # creating a vector from four numbers and a char > v <- c(.295, .300, .250, .287, "zilch") > v [1] "0.295" "0.3" "0.25" "0.287" "zilch"
You can use the c
function to
recursively assemble a vector from other data structures using the
recursive=TRUE
option:
> # creating a vector from four numbers and a list of > # three more > v <- c(.295, .300, .250, .287, list(.102, .200, .303), recursive=TRUE) > v [1] 0.295 0.300 0.250 0.287 0.102 0.200 0.303
But beware of using a list as an argument, as you will get back a list:
> v <- c(.295, .300, .250, .287, list(.102, .200, .303), recursive=TRUE) > v [1] 0.295 0.300 0.250 0.287 0.102 0.200 0.303 > typeof(v) [1] "double" > v <- c(.295, .300, .250, .287, list(1, 2, 3)) > typeof(v) [1] "list" > class(v) [1] "list" > v [[1]] [1] 0.295 [[2]] [1] 0.3 [[3]] [1] 0.25 [[4]] [1] 0.287 [[5]] [1] 1 [[6]] [1] 2 [[7]] [1] 3
Another useful tool for assembling a vector is the “:” operator. This operator creates a sequence of values from the first operand to the second operand:
> 1:10
[1] 1 2 3 4 5 6 7 8 9 10
A more flexible function is the seq
function:
> seq(from=5, to=25, by=5)
[1] 5 10 15 20 25
You can explicitly manipulate the length of a vector through the length attribute:
> w <- 1:10 > w [1] 1 2 3 4 5 6 7 8 9 10 > length(w) <- 5 > w [1] 1 2 3 4 5
Note that when you expand the length of a vector, uninitialized
values are given the NA
value:
> length(w) <- 10 > w [1] 1 2 3 4 5 NA NA NA NA NA