A vector is a data type that is used to store a collection of elements. The elements in a vector can be of any basic type, but all elements of a single vector must be of the same type. In this class, we will primarily work with vectors of the numeric data type.

Creating Vectors

There are several ways to create a vector in R. In this notebook we will discuss two functions that can be used to create vectors from scratch: The c function, and the

Combine

Vectors can be formed using the c() function. The name of this function is short for the word “combine”. In the code chunk below, we will create two vectors name v1 and v2, each of which contains four elements.

v1 <- c(3, 1, 4, 1)
v2 <- c(5, 9, 2, 6)

We will view the contents of the vector v1.

v1
[1] 3 1 4 1

Similarly, we can view the contents of ‘v2’.

v2
[1] 5 9 2 6

We can use the c() function to combine two vectors into a larger vector.

v3 <- c(v1, v2)
v3
[1] 3 1 4 1 5 9 2 6

Although we will mostly work with numeric vectors, we will occasionally need to work with vectors whose elements are of the character class.

text_vec <- c("Alex", "Beth", "Craig", "Drew", "Emma")
text_vec
[1] "Alex"  "Beth"  "Craig" "Drew"  "Emma" 

The seq Function

The seq() function is a convenient tool for creating a vector consisting of several values, evently spaced over a range.

s1 <- seq(from=0, to=5, by=0.2)
s1
 [1] 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6 2.8 3.0 3.2 3.4 3.6 3.8 4.0 4.2 4.4 4.6 4.8 5.0
s2 <- seq(from=6, to=10, by=0.5)
s2
[1]  6.0  6.5  7.0  7.5  8.0  8.5  9.0  9.5 10.0

If the terms of our sequence vary by 1, we can use the start:end shorthand notation to create the sequence.

s3 <- 3:12
s3
 [1]  3  4  5  6  7  8  9 10 11 12

Functions

In this section, we will introduce several functions that can be used to get information about a vector. The first such function that we will demostrate is length(), which returns the number of elements in the vector.

length(s1)
[1] 26

The sum() function can be used to sum up the elements of a numeric vector.

sum(s1)
[1] 65

Being a statistical programming language, R also provides several functions for calculating statistics for the numbers stored in a vector. For example, the mean() function returns the arithmetic average of the elements of a vector.

mean(s1)
[1] 2.5

We can use sd() to find the sample standard deviation of the numbers in a vector.

sd(s1)
[1] 1.529706

And var() provides the sample variance.

var(s1)
[1] 2.34

Vector Operations

One of the biggest advantages of vectors is that they support elementwise operations. If we wish to apply a specific operation to each element in a vector, we can simply apply the operation to the vector as a whole. R will automatically apply the operation to each element of the vector, without the need for using a loop.

The follow cell illustrates the operation of scalar multiplication. We will multiply the contents of our vector v1 (defined at the beginning of the notebook) by the scalar value 4.

4 * v1
[1] 12  4 16  4

We can also add a constant amount to all of the entries in a vector.

30 + v1
[1] 33 31 34 31

If we add two vectors of the same length, then the addition will be performed elementwise.

v1 + v2
[1]  8 10  6  7

We can also perform elementwise multiplication, division, or subtraction. The following cell demonstrates elementwise multiplication.

v1 * v2
[1] 15  9  8  6

We can also use the ^ operator to raise every element of a vector to a common power.

v1^2
[1]  9  1 16  1

Example: Calculating Revenue

Assume that an online retailer sells four products: Product A, Product B, Product C, and Product D. In the cell below, we define two vectors: units and price. Assume that the vector units stores the number of units that the retailer sold of Products A - D during a given week, listed in alphabetical order. The vector price lists the price of the four products, in the same order. The following cell calculates the total revenue for the retailer during the week.

units <- c(217, 362, 178, 255)
price <- c(19.99, 15.49, 12.79, 22.49)
revenue <- sum(units * price)
revenue
[1] 17956.78

Example: Projectile Motion

Assume that a ball is launched upward from a height of 640 feet with an initial velocity of 96 ft/sec. Then the height h of the ball after t seconds is given by the formula:

\[h(t) = 640 + 96 t - 16 t^2\] The following code chunk calcualtes the height of the ball at times \(t = 0, 1, 2, ..., 10\).

t <- 0:10
h <- 640 + 96*t - 16*t^2
h
 [1] 640 720 768 784 768 720 640 528 384 208   0

It is occasionally useful to show the contents of two vectors of the same length stacked together horizontally. The function rbind() can be used to accomplish this.

rbind(t, h)
  [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
t    0    1    2    3    4    5    6    7    8     9    10
h  640  720  768  784  768  720  640  528  384   208     0

Example: SSE and MSE

Two vector calculations that are of particular importance in statistics and machine learning are to find the sum and mean of the squares of the entries in a vector. If the elements of the vector represent errors associated with several individual predictions, the we called the resulting values the Sum of Square Errors (SSE) and Mean Squared Error (MSE).

In the cell below, we define an error vector e.

e <- c(1.7, 2.1, -3.2, 4.1, -2.7)

In the next cell, we will calculate SSE.

SSE <- sum(e^2)
SSE
[1] 41.64

The following cell calculates the value of MSE.

MSE <- mean(e^2)
MSE
[1] 8.328
LS0tDQp0aXRsZTogIkFwcGVuZGl4IEEuMiAtIFZlY3RvcnMgaW4gUiINCmF1dGhvcjogIlJvYmJpZSBCZWFuZSINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazoNCiAgICB0aGVtZTogZmxhdGx5DQogICAgdG9jOiB0cnVlDQogICAgdG9jX2RlcHRoOiA0DQotLS0NCg0KQSAqKnZlY3RvcioqIGlzIGEgZGF0YSB0eXBlIHRoYXQgaXMgdXNlZCB0byBzdG9yZSBhIGNvbGxlY3Rpb24gb2YgZWxlbWVudHMuIFRoZSBlbGVtZW50cyBpbiBhIHZlY3RvciBjYW4gYmUgb2YgYW55IGJhc2ljIHR5cGUsIGJ1dCBhbGwgZWxlbWVudHMgb2YgYSBzaW5nbGUgdmVjdG9yIG11c3QgYmUgb2YgdGhlIHNhbWUgdHlwZS4gSW4gdGhpcyBjbGFzcywgd2Ugd2lsbCBwcmltYXJpbHkgd29yayB3aXRoIHZlY3RvcnMgb2YgdGhlICoqbnVtZXJpYyoqIGRhdGEgdHlwZS4gDQoNCiMjIyAqKkNyZWF0aW5nIFZlY3RvcnMqKg0KDQpUaGVyZSBhcmUgc2V2ZXJhbCB3YXlzIHRvIGNyZWF0ZSBhIHZlY3RvciBpbiBSLiBJbiB0aGlzIG5vdGVib29rIHdlIHdpbGwgZGlzY3VzcyB0d28gZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIHZlY3RvcnMgZnJvbSBzY3JhdGNoOiBUaGUgYGNgIGZ1bmN0aW9uLCBhbmQgdGhlIA0KDQojIyMjICoqQ29tYmluZSoqDQoNClZlY3RvcnMgY2FuIGJlIGZvcm1lZCB1c2luZyB0aGUgYGMoKWAgZnVuY3Rpb24uIFRoZSBuYW1lIG9mIHRoaXMgZnVuY3Rpb24gaXMgc2hvcnQgZm9yIHRoZSB3b3JkICJjb21iaW5lIi4gSW4gdGhlIGNvZGUgY2h1bmsgYmVsb3csIHdlIHdpbGwgY3JlYXRlIHR3byB2ZWN0b3JzIG5hbWUgYHYxYCBhbmQgYHYyYCwgZWFjaCBvZiB3aGljaCBjb250YWlucyBmb3VyIGVsZW1lbnRzLiANCg0KDQpgYGB7cn0NCnYxIDwtIGMoMywgMSwgNCwgMSkNCnYyIDwtIGMoNSwgOSwgMiwgNikNCmBgYA0KDQpXZSB3aWxsIHZpZXcgdGhlIGNvbnRlbnRzIG9mIHRoZSB2ZWN0b3IgYHYxYC4gIA0KDQpgYGB7cn0NCnYxDQpgYGANCg0KU2ltaWxhcmx5LCB3ZSBjYW4gdmlldyB0aGUgY29udGVudHMgb2YgJ3YyJy4gDQoNCmBgYHtyfQ0KdjINCmBgYA0KDQpXZSBjYW4gdXNlIHRoZSBgYygpYCBmdW5jdGlvbiB0byBjb21iaW5lIHR3byB2ZWN0b3JzIGludG8gYSBsYXJnZXIgdmVjdG9yLg0KDQpgYGB7cn0NCnYzIDwtIGModjEsIHYyKQ0KdjMNCmBgYA0KDQpBbHRob3VnaCB3ZSB3aWxsIG1vc3RseSB3b3JrIHdpdGggbnVtZXJpYyB2ZWN0b3JzLCB3ZSB3aWxsIG9jY2FzaW9uYWxseSBuZWVkIHRvIHdvcmsgd2l0aCB2ZWN0b3JzIHdob3NlIGVsZW1lbnRzIGFyZSBvZiB0aGUgY2hhcmFjdGVyIGNsYXNzLiANCg0KYGBge3J9DQp0ZXh0X3ZlYyA8LSBjKCJBbGV4IiwgIkJldGgiLCAiQ3JhaWciLCAiRHJldyIsICJFbW1hIikNCnRleHRfdmVjDQpgYGANCg0KIyMjIyAqKlRoZSBgc2VxYCBGdW5jdGlvbioqDQoNClRoZSBgc2VxKClgIGZ1bmN0aW9uIGlzIGEgY29udmVuaWVudCB0b29sIGZvciBjcmVhdGluZyBhIHZlY3RvciBjb25zaXN0aW5nIG9mIHNldmVyYWwgdmFsdWVzLCBldmVudGx5IHNwYWNlZCBvdmVyIGEgcmFuZ2UuIA0KDQpgYGB7cn0NCnMxIDwtIHNlcShmcm9tPTAsIHRvPTUsIGJ5PTAuMikNCnMxDQpgYGANCg0KYGBge3J9DQpzMiA8LSBzZXEoZnJvbT02LCB0bz0xMCwgYnk9MC41KQ0KczINCmBgYA0KDQpJZiB0aGUgdGVybXMgb2Ygb3VyIHNlcXVlbmNlIHZhcnkgYnkgMSwgd2UgY2FuIHVzZSB0aGUgYHN0YXJ0OmVuZGAgc2hvcnRoYW5kIG5vdGF0aW9uIHRvIGNyZWF0ZSB0aGUgc2VxdWVuY2UuIA0KDQpgYGB7cn0NCnMzIDwtIDM6MTINCnMzDQpgYGANCg0KDQojIyMjICoqRnVuY3Rpb25zKioNCg0KSW4gdGhpcyBzZWN0aW9uLCB3ZSB3aWxsIGludHJvZHVjZSBzZXZlcmFsIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHRvIGdldCBpbmZvcm1hdGlvbiBhYm91dCBhIHZlY3Rvci4gVGhlIGZpcnN0IHN1Y2ggZnVuY3Rpb24gdGhhdCB3ZSB3aWxsIGRlbW9zdHJhdGUgaXMgYGxlbmd0aCgpYCwgd2hpY2ggcmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSB2ZWN0b3IuIA0KDQpgYGB7cn0NCmxlbmd0aChzMSkNCmBgYA0KDQpUaGUgYHN1bSgpYCBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBzdW0gdXAgdGhlIGVsZW1lbnRzIG9mIGEgbnVtZXJpYyB2ZWN0b3IuIA0KDQpgYGB7cn0NCnN1bShzMSkNCmBgYA0KDQpCZWluZyBhIHN0YXRpc3RpY2FsIHByb2dyYW1taW5nIGxhbmd1YWdlLCBSIGFsc28gcHJvdmlkZXMgc2V2ZXJhbCBmdW5jdGlvbnMgZm9yIGNhbGN1bGF0aW5nIHN0YXRpc3RpY3MgZm9yIHRoZSBudW1iZXJzIHN0b3JlZCBpbiBhIHZlY3Rvci4gRm9yIGV4YW1wbGUsIHRoZSBgbWVhbigpYCBmdW5jdGlvbiByZXR1cm5zIHRoZSBhcml0aG1ldGljIGF2ZXJhZ2Ugb2YgdGhlIGVsZW1lbnRzIG9mIGEgdmVjdG9yLiANCg0KYGBge3J9DQptZWFuKHMxKQ0KYGBgDQoNCldlIGNhbiB1c2UgYHNkKClgIHRvIGZpbmQgdGhlIHNhbXBsZSBzdGFuZGFyZCBkZXZpYXRpb24gb2YgdGhlIG51bWJlcnMgaW4gYSB2ZWN0b3IuIA0KDQpgYGB7cn0NCnNkKHMxKQ0KYGBgDQoNCkFuZCBgdmFyKClgIHByb3ZpZGVzIHRoZSBzYW1wbGUgdmFyaWFuY2UuDQoNCmBgYHtyfQ0KdmFyKHMxKQ0KYGBgDQoNCiMjIyAqKlZlY3RvciBPcGVyYXRpb25zKioNCg0KT25lIG9mIHRoZSBiaWdnZXN0IGFkdmFudGFnZXMgb2YgdmVjdG9ycyBpcyB0aGF0IHRoZXkgc3VwcG9ydCBlbGVtZW50d2lzZSBvcGVyYXRpb25zLiBJZiB3ZSB3aXNoIHRvIGFwcGx5IGEgc3BlY2lmaWMgb3BlcmF0aW9uIHRvIGVhY2ggZWxlbWVudCBpbiBhIHZlY3Rvciwgd2UgY2FuIHNpbXBseSBhcHBseSB0aGUgb3BlcmF0aW9uIHRvIHRoZSB2ZWN0b3IgYXMgYSB3aG9sZS4gUiB3aWxsIGF1dG9tYXRpY2FsbHkgYXBwbHkgdGhlIG9wZXJhdGlvbiB0byBlYWNoIGVsZW1lbnQgb2YgdGhlIHZlY3Rvciwgd2l0aG91dCB0aGUgbmVlZCBmb3IgdXNpbmcgYSBsb29wLiANCg0KVGhlIGZvbGxvdyBjZWxsIGlsbHVzdHJhdGVzIHRoZSBvcGVyYXRpb24gb2Ygc2NhbGFyIG11bHRpcGxpY2F0aW9uLiBXZSB3aWxsIG11bHRpcGx5IHRoZSBjb250ZW50cyBvZiBvdXIgdmVjdG9yIGB2MWAgKGRlZmluZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbm90ZWJvb2spIGJ5IHRoZSBzY2FsYXIgdmFsdWUgNC4gDQoNCmBgYHtyfQ0KNCAqIHYxDQpgYGANCg0KV2UgY2FuIGFsc28gYWRkIGEgY29uc3RhbnQgYW1vdW50IHRvIGFsbCBvZiB0aGUgZW50cmllcyBpbiBhIHZlY3Rvci4gDQoNCmBgYHtyfQ0KMzAgKyB2MQ0KYGBgDQoNCg0KSWYgd2UgYWRkIHR3byB2ZWN0b3JzIG9mIHRoZSBzYW1lIGxlbmd0aCwgdGhlbiB0aGUgYWRkaXRpb24gd2lsbCBiZSBwZXJmb3JtZWQgZWxlbWVudHdpc2UuIA0KDQpgYGB7cn0NCnYxICsgdjINCmBgYA0KDQpXZSBjYW4gYWxzbyBwZXJmb3JtIGVsZW1lbnR3aXNlIG11bHRpcGxpY2F0aW9uLCBkaXZpc2lvbiwgb3Igc3VidHJhY3Rpb24uIFRoZSBmb2xsb3dpbmcgY2VsbCBkZW1vbnN0cmF0ZXMgZWxlbWVudHdpc2UgbXVsdGlwbGljYXRpb24uDQoNCmBgYHtyfQ0KdjEgKiB2Mg0KYGBgDQoNCldlIGNhbiBhbHNvIHVzZSB0aGUgYF5gIG9wZXJhdG9yIHRvIHJhaXNlIGV2ZXJ5IGVsZW1lbnQgb2YgYSB2ZWN0b3IgdG8gYSBjb21tb24gcG93ZXIuIA0KDQpgYGB7cn0NCnYxXjINCmBgYA0KDQoNCiMjIyMgKipFeGFtcGxlOiBDYWxjdWxhdGluZyBSZXZlbnVlKioNCg0KQXNzdW1lIHRoYXQgYW4gb25saW5lIHJldGFpbGVyIHNlbGxzIGZvdXIgcHJvZHVjdHM6IFByb2R1Y3QgQSwgUHJvZHVjdCBCLCBQcm9kdWN0IEMsIGFuZCBQcm9kdWN0IEQuIEluIHRoZSBjZWxsIGJlbG93LCB3ZSBkZWZpbmUgdHdvIHZlY3RvcnM6IGB1bml0c2AgYW5kIGBwcmljZWAuIEFzc3VtZSB0aGF0IHRoZSB2ZWN0b3IgYHVuaXRzYCBzdG9yZXMgdGhlIG51bWJlciBvZiB1bml0cyB0aGF0IHRoZSByZXRhaWxlciBzb2xkIG9mIFByb2R1Y3RzIEEgLSBEIGR1cmluZyBhIGdpdmVuIHdlZWssIGxpc3RlZCBpbiBhbHBoYWJldGljYWwgb3JkZXIuIFRoZSB2ZWN0b3IgYHByaWNlYCBsaXN0cyB0aGUgcHJpY2Ugb2YgdGhlIGZvdXIgcHJvZHVjdHMsIGluIHRoZSBzYW1lIG9yZGVyLiBUaGUgZm9sbG93aW5nIGNlbGwgY2FsY3VsYXRlcyB0aGUgdG90YWwgcmV2ZW51ZSBmb3IgdGhlIHJldGFpbGVyIGR1cmluZyB0aGUgd2Vlay4gDQoNCmBgYHtyfQ0KdW5pdHMgPC0gYygyMTcsIDM2MiwgMTc4LCAyNTUpDQpwcmljZSA8LSBjKDE5Ljk5LCAxNS40OSwgMTIuNzksIDIyLjQ5KQ0KcmV2ZW51ZSA8LSBzdW0odW5pdHMgKiBwcmljZSkNCnJldmVudWUNCmBgYA0KDQojIyMjICoqRXhhbXBsZTogUHJvamVjdGlsZSBNb3Rpb24qKg0KDQpBc3N1bWUgdGhhdCBhIGJhbGwgaXMgbGF1bmNoZWQgdXB3YXJkIGZyb20gYSBoZWlnaHQgb2YgNjQwIGZlZXQgd2l0aCBhbiBpbml0aWFsIHZlbG9jaXR5IG9mIDk2IGZ0L3NlYy4gVGhlbiB0aGUgaGVpZ2h0IGBoYCBvZiB0aGUgYmFsbCBhZnRlciBgdGAgc2Vjb25kcyBpcyBnaXZlbiBieSB0aGUgZm9ybXVsYTogDQoNCiQkaCh0KSA9IDY0MCArIDk2IHQgLSAxNiB0XjIkJA0KVGhlIGZvbGxvd2luZyBjb2RlIGNodW5rIGNhbGN1YWx0ZXMgdGhlIGhlaWdodCBvZiB0aGUgYmFsbCBhdCB0aW1lcyAkdCA9IDAsIDEsIDIsIC4uLiwgMTAkLiANCg0KDQpgYGB7cn0NCnQgPC0gMDoxMA0KaCA8LSA2NDAgKyA5Nip0IC0gMTYqdF4yDQpoDQpgYGANCg0KSXQgaXMgb2NjYXNpb25hbGx5IHVzZWZ1bCB0byBzaG93IHRoZSBjb250ZW50cyBvZiB0d28gdmVjdG9ycyBvZiB0aGUgc2FtZSBsZW5ndGggc3RhY2tlZCB0b2dldGhlciBob3Jpem9udGFsbHkuIFRoZSBmdW5jdGlvbiBgcmJpbmQoKWAgY2FuIGJlIHVzZWQgdG8gYWNjb21wbGlzaCB0aGlzLiANCg0KYGBge3J9DQpyYmluZCh0LCBoKQ0KYGBgDQoNCiMjIyMgKipFeGFtcGxlOiBTU0UgYW5kIE1TRSoqDQoNClR3byB2ZWN0b3IgY2FsY3VsYXRpb25zIHRoYXQgYXJlIG9mIHBhcnRpY3VsYXIgaW1wb3J0YW5jZSBpbiBzdGF0aXN0aWNzIGFuZCBtYWNoaW5lIGxlYXJuaW5nIGFyZSB0byBmaW5kIHRoZSBzdW0gYW5kIG1lYW4gb2YgdGhlIHNxdWFyZXMgb2YgdGhlIGVudHJpZXMgaW4gYSB2ZWN0b3IuIElmIHRoZSBlbGVtZW50cyBvZiB0aGUgdmVjdG9yIHJlcHJlc2VudCBlcnJvcnMgYXNzb2NpYXRlZCB3aXRoIHNldmVyYWwgaW5kaXZpZHVhbCBwcmVkaWN0aW9ucywgdGhlIHdlIGNhbGxlZCB0aGUgcmVzdWx0aW5nIHZhbHVlcyB0aGUgKipTdW0gb2YgU3F1YXJlIEVycm9ycyAoU1NFKSoqIGFuZCAqKk1lYW4gU3F1YXJlZCBFcnJvciAoTVNFKSoqLiANCg0KSW4gdGhlIGNlbGwgYmVsb3csIHdlIGRlZmluZSBhbiBlcnJvciB2ZWN0b3IgYGVgLg0KDQpgYGB7cn0NCmUgPC0gYygxLjcsIDIuMSwgLTMuMiwgNC4xLCAtMi43KQ0KYGBgDQoNCkluIHRoZSBuZXh0IGNlbGwsIHdlIHdpbGwgY2FsY3VsYXRlIGBTU0VgLiANCg0KYGBge3J9DQpTU0UgPC0gc3VtKGVeMikNClNTRQ0KYGBgDQoNClRoZSBmb2xsb3dpbmcgY2VsbCBjYWxjdWxhdGVzIHRoZSB2YWx1ZSBvZiBgTVNFYC4gDQoNCmBgYHtyfQ0KTVNFIDwtIG1lYW4oZV4yKQ0KTVNFDQpgYGANCg==