Vectors

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) ...

Get R in a Nutshell, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.