Prof. Eric A. Suess

So how should you complete your homework for this class?

Homework 1

Read: Preface, Chapter 1, Appendix A, B, and D. 
Problems:
Appendix B Exercises B.1, B.2, B.3, B.4
Appendix D Exercises D.1, D.6, D.11

Appendix B

B.1

We see nothing. Well actually we see the first layer of a ggplot2 plot.

obj1 <- 2:10
obj2 <- c(2, 5)
obj3 <- c(TRUE, FALSE)
obj4 <- 42
obj1 * 10
[1]  20  30  40  50  60  70  80  90 100
obj1[2:4]
[1] 3 4 5
obj1[-3]
[1]  2  3  5  6  7  8  9 10
obj1 + obj2
longer object length is not a multiple of shorter object length
[1]  4  8  6 10  8 12 10 14 12
obj1 * obj3
longer object length is not a multiple of shorter object length
[1]  2  0  4  0  6  0  8  0 10
obj1 + obj4
[1] 44 45 46 47 48 49 50 51 52
obj2 + obj3
[1] 3 5
sum(obj2)
[1] 7
sum(obj3)
[1] 1

B.2

a <- c(10, 15)
b <- c(TRUE, FALSE)
c <- c("happy", "sad")
data.frame(a, b, c)
cbind(a, b)
      a b
[1,] 10 1
[2,] 15 0
rbind(a, b)
  [,1] [,2]
a   10   15
b    1    0
cbind(a, b, c)
     a    b       c      
[1,] "10" "TRUE"  "happy"
[2,] "15" "FALSE" "sad"  
list(a, b, c)[[2]]
[1]  TRUE FALSE

B.3

mylist <- list(x1="sally", x2=42, x3=FALSE, x4=1:5)
is.list(mylist)
[1] TRUE
names(mylist)
[1] "x1" "x2" "x3" "x4"
length(mylist)
[1] 4
mylist[[2]]
[1] 42
mylist[["x1"]]
[1] "sally"
mylist$x2
[1] 42
length(mylist[["x4"]])
[1] 5
class(mylist)
[1] "list"
typeof(mylist)
[1] "list"
class(mylist[[4]])
[1] "integer"
typeof(mylist[[3]])
[1] "logical"

B.4

library(mosaic)
ds <- read.csv("http://nhorton.people.amherst.edu/r2/datasets/helpmiss.csv")
ds

Describe in words what computations are being done. Using the “pipe” notation, trans- late this code into a more readable version.

summarise(group_by(select(filter(mutate(ds,
  sex = ifelse(female==1, "F", "M")), !is.na(pcs)), age, pcs, sex),
  sex), meanage=mean(age), meanpcs=mean(pcs),n=n())

Answer of exercise B.4

This code generates a new variable called sex based on the value of the female variable, drops any observations missing the pcs variable, selects three variables, then displays the average age, PCS, and sample size for each of the two groups defined by sex.

Here it is much clearer what each operation within the “pipe-stream” is doing. It is straightforward to debug expressions in this manner by just leaving off the %>% at each line: this will only evaluate the set of functions called to that point and display the intermediate output.

library(mosaic)
ds <-
read.csv("http://nhorton.people.amherst.edu/r2/datasets/helpmiss.csv")
ds %>% mutate(sex = ifelse(female==1, "F", "M")) %>%
  filter(!is.na(pcs)) %>%
  select(age, pcs, sex) %>%
  group_by(sex) %>%
  summarise(meanage = mean(age), meanpcs = mean(pcs), count = n())

B.5

Answers may vary.

library(readr) # package, function call, argument
ds <- read_csv("http://www.mysite.com/myfile", progress = TRUE)
# quoted character string, named argument

Appendix D

D.1

x <- 1:5
x <- x + 1
x
[1] 2 3 4 5 6

D.6

The implication is that arbitrary LATEX commands can be included in R Markdown files to format mathematical expressions.

\(\hat{y} = \hat{\beta}_0 + \hat{\beta}_1 \cdot x + \epsilon\)

D.11

library(xtable)
library(mdsr)
options(xtable.comment = FALSE)
mod <- lm(cesd ~ mcs + sex, data = HELPrct)
xtable(mod)
LS0tCnRpdGxlOiAnU3RhdC4gNjUwIFNlY3Rpb24gMSBvciAyOiBIb21ld29yayAxJwpvdXRwdXQ6CiAgd29yZF9kb2N1bWVudDogZGVmYXVsdAogIHBkZl9kb2N1bWVudDogZGVmYXVsdAogIGh0bWxfbm90ZWJvb2s6IGRlZmF1bHQKICBodG1sX2RvY3VtZW50OgogICAgZGZfcHJpbnQ6IHBhZ2VkCi0tLQoKKipQcm9mLiBFcmljIEEuIFN1ZXNzKioKClNvIGhvdyBzaG91bGQgeW91IGNvbXBsZXRlIHlvdXIgaG9tZXdvcmsgZm9yIHRoaXMgY2xhc3M/CgotIEZpcnN0IHRoaW5nIHRvIGRvIGlzIHR5cGUgYWxsIG9mIHlvdXIgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2JsZW1zIHlvdSBkbyBpbiB0aGUgdGV4dCBwYXJ0IG9mIHlvdXIgUiBOb3RlYm9vay4KLSBTZWNvbmQgdGhpbmcgdG8gZG8gaXMgdHlwZSBhbGwgb2YgeW91ciBSIGNvZGUgaW50byBSIGNodW5rcyB0aGF0IGNhbiBiZSBydW4uCi0gSWYgeW91IGxvYWQgdGhlIHRpZHl2ZXJzZSBpbiBhbiBSIE5vdGVib29rIGNodW5rLCBiZSBzdXJlIHRvIGluY2x1ZGUgdGhlICJtZXNzYWdlID0gRkFMU0UiIGluIHRoZSB7cn0sIHNvIHtyIG1lc3NhZ2UgPSBGQUxTRX0uCi0gTGFzdCB0aGluZyBpcyB0byBzcGVsbCBjaGVjayB5b3VyIFIgTm90ZWJvb2suICBFZGl0ID4gQ2hlY2sgU3BlbGxpbmcuLi4gb3IgaGl0IHRoZSBGNyBrZXkuCgojIEhvbWV3b3JrIDEKCiAgICBSZWFkOiBQcmVmYWNlLCBDaGFwdGVyIDEsIEFwcGVuZGl4IEEsIEIsIGFuZCBELiAKICAgIFByb2JsZW1zOgogICAgQXBwZW5kaXggQiBFeGVyY2lzZXMgQi4xLCBCLjIsIEIuMywgQi40CiAgICBBcHBlbmRpeCBEIEV4ZXJjaXNlcyBELjEsIEQuNiwgRC4xMQoKXG5ld3BhZ2UKCiMgQXBwZW5kaXggQgoKIyMgQi4xICAKCldlIHNlZSBub3RoaW5nLiAgV2VsbCBhY3R1YWxseSB3ZSBzZWUgdGhlIGZpcnN0IGxheWVyIG9mIGEgZ2dwbG90MiBwbG90LgoKYGBge3IgbWVzc2FnZSA9IEZBTFNFfQpvYmoxIDwtIDI6MTAKb2JqMiA8LSBjKDIsIDUpCm9iajMgPC0gYyhUUlVFLCBGQUxTRSkKb2JqNCA8LSA0MgoKb2JqMSAqIDEwCm9iajFbMjo0XQpvYmoxWy0zXQpvYmoxICsgb2JqMgpvYmoxICogb2JqMwpvYmoxICsgb2JqNApvYmoyICsgb2JqMwpzdW0ob2JqMikKc3VtKG9iajMpCmBgYAoKXG5ld3BhZ2UKCiMgQi4yIAoKYGBge3J9CmEgPC0gYygxMCwgMTUpCmIgPC0gYyhUUlVFLCBGQUxTRSkKYyA8LSBjKCJoYXBweSIsICJzYWQiKQpgYGAKCmBgYHtyfQpkYXRhLmZyYW1lKGEsIGIsIGMpCmBgYAoKYGBge3J9CmNiaW5kKGEsIGIpCmBgYAoKYGBge3J9CnJiaW5kKGEsIGIpCmBgYAoKYGBge3J9CmNiaW5kKGEsIGIsIGMpCmBgYAoKYGBge3J9Cmxpc3QoYSwgYiwgYylbWzJdXQpgYGAKClxuZXdwYWdlCgojIEIuMyAKCmBgYHtyfQpteWxpc3QgPC0gbGlzdCh4MT0ic2FsbHkiLCB4Mj00MiwgeDM9RkFMU0UsIHg0PTE6NSkKYGBgCgpgYGB7cn0KaXMubGlzdChteWxpc3QpCm5hbWVzKG15bGlzdCkKbGVuZ3RoKG15bGlzdCkKbXlsaXN0W1syXV0KbXlsaXN0W1sieDEiXV0KbXlsaXN0JHgyCmxlbmd0aChteWxpc3RbWyJ4NCJdXSkKY2xhc3MobXlsaXN0KQp0eXBlb2YobXlsaXN0KQpjbGFzcyhteWxpc3RbWzRdXSkKdHlwZW9mKG15bGlzdFtbM11dKQpgYGAKClxuZXdwYWdlCgojIEIuNAoKYGBge3J9CmxpYnJhcnkobW9zYWljKQpkcyA8LSByZWFkLmNzdigiaHR0cDovL25ob3J0b24ucGVvcGxlLmFtaGVyc3QuZWR1L3IyL2RhdGFzZXRzL2hlbHBtaXNzLmNzdiIpCmRzCmBgYAoKRGVzY3JpYmUgaW4gd29yZHMgd2hhdCBjb21wdXRhdGlvbnMgYXJlIGJlaW5nIGRvbmUuIFVzaW5nIHRoZSDigJxwaXBl4oCdIG5vdGF0aW9uLCB0cmFucy0KbGF0ZSB0aGlzIGNvZGUgaW50byBhIG1vcmUgcmVhZGFibGUgdmVyc2lvbi4KCmBgYHtyfQpzdW1tYXJpc2UoZ3JvdXBfYnkoc2VsZWN0KGZpbHRlcihtdXRhdGUoZHMsCiAgc2V4ID0gaWZlbHNlKGZlbWFsZT09MSwgIkYiLCAiTSIpKSwgIWlzLm5hKHBjcykpLCBhZ2UsIHBjcywgc2V4KSwKICBzZXgpLCBtZWFuYWdlPW1lYW4oYWdlKSwgbWVhbnBjcz1tZWFuKHBjcyksbj1uKCkpCmBgYAoKKipBbnN3ZXIgb2YgZXhlcmNpc2UgQi40KioKClRoaXMgY29kZSBnZW5lcmF0ZXMgYSBuZXcgdmFyaWFibGUgY2FsbGVkIHNleCBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgdGhlIGZlbWFsZSB2YXJpYWJsZSwKZHJvcHMgYW55IG9ic2VydmF0aW9ucyBtaXNzaW5nIHRoZSBwY3MgdmFyaWFibGUsIHNlbGVjdHMgdGhyZWUgdmFyaWFibGVzLCB0aGVuIGRpc3BsYXlzIHRoZQphdmVyYWdlIGFnZSwgUENTLCBhbmQgc2FtcGxlIHNpemUgZm9yIGVhY2ggb2YgdGhlIHR3byBncm91cHMgZGVmaW5lZCBieSBzZXguCgpIZXJlIGl0IGlzIG11Y2ggY2xlYXJlciB3aGF0IGVhY2ggb3BlcmF0aW9uIHdpdGhpbiB0aGUg4oCccGlwZS1zdHJlYW3igJ0gaXMgZG9pbmcuIEl0IGlzCnN0cmFpZ2h0Zm9yd2FyZCB0byBkZWJ1ZyBleHByZXNzaW9ucyBpbiB0aGlzIG1hbm5lciBieSBqdXN0IGxlYXZpbmcgb2ZmIHRoZSAlPiUgYXQgZWFjaCBsaW5lOgp0aGlzIHdpbGwgb25seSBldmFsdWF0ZSB0aGUgc2V0IG9mIGZ1bmN0aW9ucyBjYWxsZWQgdG8gdGhhdCBwb2ludCBhbmQgZGlzcGxheSB0aGUgaW50ZXJtZWRpYXRlCm91dHB1dC4KCmBgYHtyfQpsaWJyYXJ5KG1vc2FpYykKZHMgPC0KcmVhZC5jc3YoImh0dHA6Ly9uaG9ydG9uLnBlb3BsZS5hbWhlcnN0LmVkdS9yMi9kYXRhc2V0cy9oZWxwbWlzcy5jc3YiKQpkcyAlPiUgbXV0YXRlKHNleCA9IGlmZWxzZShmZW1hbGU9PTEsICJGIiwgIk0iKSkgJT4lCiAgZmlsdGVyKCFpcy5uYShwY3MpKSAlPiUKICBzZWxlY3QoYWdlLCBwY3MsIHNleCkgJT4lCiAgZ3JvdXBfYnkoc2V4KSAlPiUKICBzdW1tYXJpc2UobWVhbmFnZSA9IG1lYW4oYWdlKSwgbWVhbnBjcyA9IG1lYW4ocGNzKSwgY291bnQgPSBuKCkpCgpgYGAKClxuZXdwYWdlCgojIEIuNQoKQW5zd2VycyBtYXkgdmFyeS4gCgpgYGB7ciBldmFsPUZBTFNFfQpsaWJyYXJ5KHJlYWRyKSAjIHBhY2thZ2UsIGZ1bmN0aW9uIGNhbGwsIGFyZ3VtZW50CmRzIDwtIHJlYWRfY3N2KCJodHRwOi8vd3d3Lm15c2l0ZS5jb20vbXlmaWxlIiwgcHJvZ3Jlc3MgPSBUUlVFKQojIHF1b3RlZCBjaGFyYWN0ZXIgc3RyaW5nLCBuYW1lZCBhcmd1bWVudApgYGAKClxuZXdwYWdlCgojIEFwcGVuZGl4IEQKCiMjIEQuMQoKYGBge3J9CnggPC0gMTo1CmBgYAoKYGBge3J9CnggPC0geCArIDEKYGBgCgpgYGB7cn0KeApgYGAKCgpcbmV3cGFnZQoKIyMgRC42CgpUaGUgaW1wbGljYXRpb24gaXMgdGhhdCBhcmJpdHJhcnkKTEFURVggY29tbWFuZHMgY2FuIGJlIGluY2x1ZGVkIGluIFIgTWFya2Rvd24gZmlsZXMgdG8gZm9ybWF0IG1hdGhlbWF0aWNhbCBleHByZXNzaW9ucy4KCiRcaGF0e3l9ID0gXGhhdHtcYmV0YX1fMCArIFxoYXR7XGJldGF9XzEgXGNkb3QgeCArIFxlcHNpbG9uJAoKXG5ld3BhZ2UKCiMjIEQuMTEKCgpgYGB7ciByZXN1bHRzPSJhc2lzIn0KbGlicmFyeSh4dGFibGUpCmxpYnJhcnkobWRzcikKb3B0aW9ucyh4dGFibGUuY29tbWVudCA9IEZBTFNFKQptb2QgPC0gbG0oY2VzZCB+IG1jcyArIHNleCwgZGF0YSA9IEhFTFByY3QpCnh0YWJsZShtb2QpCmBgYAoKCg==