# More Indexing and Matresses

Problem Set 2 was distributed. A digital version of the prompt can be accessed here: ProblemSet2.pdf. As always the code we produced in class can be downloaded and reviewed here: Code-Day06.R.

### Indexing w/ TRUE and FALSE

We began with a discussion of using TRUE and FALSE inside of the `[]` brackets to extract elements from vectors.

``````abc <- c("a", "b", "c")

# returns the first and third element of abc
# i.e., those positions that are set to TRUE

abc[c(TRUE, FALSE, TRUE)]
``````

With this in mind, we can use logical arguments to subset vectors.

``````# returns a vector of length 26
# containing the logical value FALSE 24 times and
# the logical value TRUE 2 times (in the first and
# last position)

letters == "a" | letters == "z"

# returns the letters "a" and "b"

letters[letters == "a" | letters == "z"]
``````

### Managing Objects and Data

R is perfectly capable of serving as a file system browser.

``````# the present working directory can be identified via

getwd()

# files and folders present in the current working
# directory can be identified via

list.files()

# files and folders present in an arbitrary
# directory can be identified by specifying the path
# for example:

# the working directory can be changed via

# saving objects stored in R's active memory
# in the current working directory (with the .Rdata extension)

x <- rnorm(n = 100, mean = 0, sd = 10)
y <- runif(n = 55, min = 0, max = 1)

save(x, y, file = "my-data.RData")

# removes all objects in R's active memory

rm(list = ls())

# load the objects x and y back into R's active memory

``````

### Matrices

We barely scratched the surface with matrices. We discussed three functions to generate matrices: `rbind()`, `cbind()`, and `matrix()`

``````
x <- 1:10
y <- 10:1

# binds the vectors x and y together (as rows)
# returns a 2 by 10 matrix

rbind(x, y)

# binds the vectors x and y together (as columns)
# returns a 10 by 2 matrix

cbind(x, y)

# returns a 5 by 5 matrix containing 0's

matrix(data = 0, nrow = 5, ncol = 5)

# returns a 4 by 10 matrix containing a
# sequence of integers from 1 to 40, filled by row

matrix(data = 1:40, nrow = 4, ncol = 10, byrow = TRUE)
``````