ruk·si

📊 R
Vectors

Updated at 2017-10-13 17:53

Vector is a list of values. When speaking about vectors, you are usually referring atomic vectors. Lists are also vectors, list vectors, that are covered later. Function c (combine) is used to make vectors.

c(1, 2, 3)
# [1] 1 2 3

Vectors have a single data type. All elements must follow it. Elements will be converted to same type when added.

c(1, TRUE, "three")

You get vector type with typeof().

numbers <- c(1, 2, 3)
typeof(numbers)
# [1] "integer"

Vectors are flat.

c(1, c(2, c(3, 4)))
# [1] 1 2 3 4

Sequences are shorthands for creating vectors.

c(1, 2, 3, 4)
1:4
# [1] 1 2 3 4

5:9
seq(5, 9)
# [1] 5 6 7 8 9

seq(5, 9, 0.5)
# [1] 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0

9:5
# [1] 9 8 7 6 5

You can get first and last elements with head and tail functions.

v <- seq(1, 20)

head(v)
# [1] 1 2 3 4 5 6

tail(v)
# [1] 15 16 17 18 19 20

tail(v, 2)
# [1] 19 20

Vector access indexing starts from 1.

# Assigning vector to variable.
sentence <- c('walk', 'the', 'plank')
sentence[3]
# [1] "plank"

# Changing an element.
sentence[3] <- "dog"
sentence[3]
# [1] "dog"

# Multipoint access.
sentence[c(1, 3)]
# [1] "walk" "dog"

# Range access.
sentence[2:4]
# [1] "the" "dog" "to"

# Range change.
sentence[5:7] <- c('the', 'poop', 'deck')

You can give names to indexes.

ranks <- 1:3
names(ranks) <- c("first", "second", "third")

ranks
# first second  third
#     1      2      3

ranks["first"]
# first
#     1

ranks["third"] <- 333

# Or during creation.
x <- c(first = 1, second = 2, third = 3)

Boolean vectors are useful for filtering vectors.

ships <- c("Blackmoon", "Cherry", "Mondilla", NA)
over.7.chars <- nchar(ships) > 7
ships[over.7.chars]
# [1] "Blackmoon" "Mondilla"

which(over.7.chars)
# [1] "Blackmoon" "Mondilla"

which(is.na(ships), arr.ind=TRUE)
# [1] 4

# Check if all ship names are over 7 characters.
all(nchar(ships) > 7)
# [1] FALSE

# Check if any ship names are exactly 6 characters.
any(nchar(ships) == 6)
# [1] TRUE

Operations applied to a vector is done to each individual elements.

a <- c(1, 2, 3)
a + 1
# [1] 2 3 4

b <- c(4, 5, 6)
a + b
# [1] 5 7 9

a == c(1, 99, 3)
# [1] TRUE FALSE TRUE

a <= c(1, 1, 1)
# [1] TRUE FALSE FALSE

sin(a)
# [1] 0.8414710 0.9092974 0.1411200

Bar plotting vectors.

vesselsSunk <- c(4, 5, 1)
names(vesselsSunk) <- c("England", "France", "Norway")
barplot(vesselsSunk)

Scatter plotting vectors.

x <- seq(1, 20, 0.1)
y <- sin(x)
plot(x, y)

NA values are special.

# Every function should treat NA (not available) specially.
# sum-function notifies about NA values.
a <- c(1, 3, NA, 7, 9)
sum(a)
# [1] NA

# Supress not available values.
sum(a, na.rm = TRUE)
# [1] 20

Sources

  • Google Developers R Programming Videos
  • Try R