Book of R Part 1 (Chapter 1-8)
Exercise 1- 2.3
getwd()
## [1] "C:/Users/Valued Customer/Documents/GIT R -Markdown/rmd"
library("MASS")
sqrt(x=-5)
## Warning in sqrt(x = -5): NaNs produced
## [1] NaN
a<- 2.3
(6*a + 42)/ 3^(4.2 -3.62)
## [1] 29.50556
(-4)^2+2
## [1] 18
-4^2+2
## [1] -14
x <- c(25.2, 15, 16.44, 15.3,18.6)
y<-mean(x)
sqrt(y/2)
## [1] 3.008987
b<-log(0.3, base=exp(1))
exp(b)
## [1] 0.3
-0.00000000423546322
## [1] -4.235463e-09
ls()
## [1] "a" "b" "x" "y"
m <- 3^2 * 4^(1/8)
m <- m/2.33
m
## [1] 4.593504
n <- -8.2 * 10^-13
m * n
## [1] -3.766673e-12
p <- seq(from= 5, to= 11,by=0.3)
sort(p, decreasing=TRUE)
## [1] 11.0 10.7 10.4 10.1 9.8 9.5 9.2 8.9 8.6 8.3 8.0 7.7 7.4 7.1 6.8
## [16] 6.5 6.2 5.9 5.6 5.3 5.0
r<-rep(c(-1,3,-5,7,-9), times=2, each=10)
sort(r,decreasing=TRUE)
## [1] 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 3 3 3 3 3
## [26] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
## [51] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5
## [76] -5 -5 -5 -5 -5 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9
d<- c((6:12),rep(5.3, times=3),-3,seq(from=102,to=length(r),length.out=9))
length(d)
## [1] 20
Exercise 2.4
vec <- c(seq(from=3,to=6,length.out=5), rep( c(2,-5.1,-33),times =2), 7/42 +2)
vec2 <- c(vec[1], vec[length(vec)])
vec3 <- vec[-c(1,length(vec))]
vec3
## [1] 3.75 4.50 5.25 6.00 2.00 -5.10 -33.00 2.00 -5.10 -33.00
vec_vec <- c(vec2[1], vec3, vec2[2])
vec_vec
## [1] 3.000000 3.750000 4.500000 5.250000 6.000000 2.000000
## [7] -5.100000 -33.000000 2.000000 -5.100000 -33.000000 2.166667
vec<- sort(vec_vec, decreasing = FALSE)
vec[length(vec):1]
## [1] 6.000000 5.250000 4.500000 3.750000 3.000000 2.166667
## [7] 2.000000 2.000000 -5.100000 -5.100000 -33.000000 -33.000000
sort(vec, decreasing = TRUE)
## [1] 6.000000 5.250000 4.500000 3.750000 3.000000 2.166667
## [7] 2.000000 2.000000 -5.100000 -5.100000 -33.000000 -33.000000
vec_n <- vec3[c(rep(3,times=3),rep(6, times=4), length(vec3))]
vec_e <-vec
vec_e[c(1,5:7, length(vec_e))] <- 99:95
vec_e
## [1] 99.00 -33.00 -5.10 -5.10 98.00 97.00 96.00 3.00 3.75 4.50
## [11] 5.25 95.00
Exercise 2.5
c(2,0.5,1,2,0.5,1,2,0.5,1)/ c(2, 0.5,1)
## [1] 1 1 1 1 1 1 1 1 1
f <- c(45, 77, 20, 19, 101, 120, 212)
c <- 5/9 * (f - 32)
c
## [1] 7.222222 25.000000 -6.666667 -7.222222 38.333333 48.888889 100.000000
vec<- rep(x=c(2,4,6),times=2)*rep(x=c(1,2),each=3)
vec [2:5] <- c(-0.1,-100)
vec
## [1] 2.0 -0.1 -100.0 -0.1 -100.0 12.0
Exercise 3.1
mat <- matrix(data=c(4.3,3.1,8.2,8.2,3.2,0.9,1.6,6.5),nrow=4,ncol=2,byrow=TRUE)
mat
## [,1] [,2]
## [1,] 4.3 3.1
## [2,] 8.2 8.2
## [3,] 3.2 0.9
## [4,] 1.6 6.5
dim(mat[-1,])
## [1] 3 2
mat[,2] <- sort(x=mat[,2])
mat
## [,1] [,2]
## [1,] 4.3 0.9
## [2,] 8.2 3.1
## [3,] 3.2 6.5
## [4,] 1.6 8.2
mat[-4,-1]
## [1] 0.9 3.1 6.5
matrix(data=mat[-4,-1])
## [,1]
## [1,] 0.9
## [2,] 3.1
## [3,] 6.5
mat2 <- mat[3:4,]
mat2
## [,1] [,2]
## [1,] 3.2 6.5
## [2,] 1.6 8.2
mat[c(4,1),2:1] <- -0.5*diag(mat2)
Exercise 3.2
2/7*(cbind(c(1,2,7),c(2,4,6))-cbind(c(10,30,50),c(20,40,60)))
## [,1] [,2]
## [1,] -2.571429 -5.142857
## [2,] -8.000000 -10.285714
## [3,] -12.285714 -15.428571
A <- matrix(data=c(1,2,7))
B <- matrix(data=c(3,4,8))
##(i) Not possible
##(ii)
t(A)%*%B
## [,1]
## [1,] 67
##(iii)
t(B)%*%(A%*%t(A))
## [,1] [,2] [,3]
## [1,] 67 134 469
##(iv) Not possible
##(v)
solve(B%*%t(B)+A%*%t(A)-100*diag(3))
## [,1] [,2] [,3]
## [1,] -0.007923676 0.003123274 0.007843334
## [2,] 0.003123274 -0.005350239 0.011483806
## [3,] 0.007843334 0.011483806 0.017584735
A <- rbind(c(2,0,0,0),c(0,3,0,0),c(0,0,5,0),c(0,0,0,-1))
solve(A)%*%A-diag(4)
## [,1] [,2] [,3] [,4]
## [1,] 0 0 0 0
## [2,] 0 0 0 0
## [3,] 0 0 0 0
## [4,] 0 0 0 0
Exercise 3.3
AR <- array(data=seq(from=4.8,to=0.1,length.out=48),dim=c(4,2,6))
AR
## , , 1
##
## [,1] [,2]
## [1,] 4.8 4.4
## [2,] 4.7 4.3
## [3,] 4.6 4.2
## [4,] 4.5 4.1
##
## , , 2
##
## [,1] [,2]
## [1,] 4.0 3.6
## [2,] 3.9 3.5
## [3,] 3.8 3.4
## [4,] 3.7 3.3
##
## , , 3
##
## [,1] [,2]
## [1,] 3.2 2.8
## [2,] 3.1 2.7
## [3,] 3.0 2.6
## [4,] 2.9 2.5
##
## , , 4
##
## [,1] [,2]
## [1,] 2.4 2.0
## [2,] 2.3 1.9
## [3,] 2.2 1.8
## [4,] 2.1 1.7
##
## , , 5
##
## [,1] [,2]
## [1,] 1.6 1.2
## [2,] 1.5 1.1
## [3,] 1.4 1.0
## [4,] 1.3 0.9
##
## , , 6
##
## [,1] [,2]
## [1,] 0.8 0.4
## [2,] 0.7 0.3
## [3,] 0.6 0.2
## [4,] 0.5 0.1
BR <- AR[c(4,1),2,]
BR
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 4.1 3.3 2.5 1.7 0.9 0.1
## [2,] 4.4 3.6 2.8 2.0 1.2 0.4
CR <- array(data=rep(x=BR[2,],times=4),dim=c(2,2,2,3))
CR
## , , 1, 1
##
## [,1] [,2]
## [1,] 4.4 2.8
## [2,] 3.6 2.0
##
## , , 2, 1
##
## [,1] [,2]
## [1,] 1.2 4.4
## [2,] 0.4 3.6
##
## , , 1, 2
##
## [,1] [,2]
## [1,] 2.8 1.2
## [2,] 2.0 0.4
##
## , , 2, 2
##
## [,1] [,2]
## [1,] 4.4 2.8
## [2,] 3.6 2.0
##
## , , 1, 3
##
## [,1] [,2]
## [1,] 1.2 4.4
## [2,] 0.4 3.6
##
## , , 2, 3
##
## [,1] [,2]
## [1,] 2.8 1.2
## [2,] 2.0 0.4
DR <- AR[,,-6]
DR
## , , 1
##
## [,1] [,2]
## [1,] 4.8 4.4
## [2,] 4.7 4.3
## [3,] 4.6 4.2
## [4,] 4.5 4.1
##
## , , 2
##
## [,1] [,2]
## [1,] 4.0 3.6
## [2,] 3.9 3.5
## [3,] 3.8 3.4
## [4,] 3.7 3.3
##
## , , 3
##
## [,1] [,2]
## [1,] 3.2 2.8
## [2,] 3.1 2.7
## [3,] 3.0 2.6
## [4,] 2.9 2.5
##
## , , 4
##
## [,1] [,2]
## [1,] 2.4 2.0
## [2,] 2.3 1.9
## [3,] 2.2 1.8
## [4,] 2.1 1.7
##
## , , 5
##
## [,1] [,2]
## [1,] 1.6 1.2
## [2,] 1.5 1.1
## [3,] 1.4 1.0
## [4,] 1.3 0.9
DR[c(2,4),2,c(1,3,5)] <- -99
DR
## , , 1
##
## [,1] [,2]
## [1,] 4.8 4.4
## [2,] 4.7 -99.0
## [3,] 4.6 4.2
## [4,] 4.5 -99.0
##
## , , 2
##
## [,1] [,2]
## [1,] 4.0 3.6
## [2,] 3.9 3.5
## [3,] 3.8 3.4
## [4,] 3.7 3.3
##
## , , 3
##
## [,1] [,2]
## [1,] 3.2 2.8
## [2,] 3.1 -99.0
## [3,] 3.0 2.6
## [4,] 2.9 -99.0
##
## , , 4
##
## [,1] [,2]
## [1,] 2.4 2.0
## [2,] 2.3 1.9
## [3,] 2.2 1.8
## [4,] 2.1 1.7
##
## , , 5
##
## [,1] [,2]
## [1,] 1.6 1.2
## [2,] 1.5 -99.0
## [3,] 1.4 1.0
## [4,] 1.3 -99.0
Exercise 4.1
mat <- c(6,9,7,3,6,7,9,6,3,6,6,7,1,9,1)
mat == 6
## [1] TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE TRUE TRUE FALSE
## [13] FALSE FALSE FALSE
mat >= 6
## [1] TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE
## [13] FALSE TRUE FALSE
mat < 6+2
## [1] TRUE FALSE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE
## [13] TRUE FALSE TRUE
mat != 6
## [1] FALSE TRUE TRUE TRUE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE
## [13] TRUE TRUE TRUE
bar <- mat[-(1:3)]
bar <- array(data=bar,dim=c(2,2,3))
bar
## , , 1
##
## [,1] [,2]
## [1,] 3 7
## [2,] 6 9
##
## , , 2
##
## [,1] [,2]
## [1,] 6 6
## [2,] 3 6
##
## , , 3
##
## [,1] [,2]
## [1,] 7 9
## [2,] 1 1
bar<=(6/2+4)
## , , 1
##
## [,1] [,2]
## [1,] TRUE TRUE
## [2,] TRUE FALSE
##
## , , 2
##
## [,1] [,2]
## [1,] TRUE TRUE
## [2,] TRUE TRUE
##
## , , 3
##
## [,1] [,2]
## [1,] TRUE FALSE
## [2,] TRUE TRUE
(bar+2)<=(6/2+4)
## , , 1
##
## [,1] [,2]
## [1,] TRUE FALSE
## [2,] FALSE FALSE
##
## , , 2
##
## [,1] [,2]
## [1,] FALSE FALSE
## [2,] TRUE FALSE
##
## , , 3
##
## [,1] [,2]
## [1,] FALSE FALSE
## [2,] TRUE TRUE
diag(10)==0
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [2,] TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [3,] TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [4,] TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE
## [5,] TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE
## [6,] TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE
## [7,] TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE
## [8,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE
## [9,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE
## [10,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE
any(bar<=(6/2+4))
## [1] TRUE
all(bar<=(6/2+4))
## [1] FALSE
any((bar+2)<=(6/2+4))
## [1] TRUE
all((bar+2)<=(6/2+4))
## [1] FALSE
any(diag(diag(10)==0))
## [1] FALSE
Exercise 4.2
foo <- c(7,1,7,10,5,9,10,3,10,8)
(foo>5)|(foo==2)
## [1] TRUE FALSE TRUE TRUE FALSE TRUE TRUE FALSE TRUE TRUE
bar <- c(8,8,4,4,5,1,5,6,6,8)
(bar<=6)&(bar!=4)
## [1] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE FALSE
((foo>5)|(foo==2))&((bar<=6)&(bar!=4))
## [1] FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE TRUE FALSE
baz <- foo+bar
baz
## [1] 15 9 11 14 10 10 15 9 16 16
#(i)
(baz>=14)&(baz!=15)
## [1] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE TRUE
#(ii)
(baz/foo>4)|(baz/foo<=2)
## [1] FALSE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE
Exercise 4.3
foo <- c(7,5,6,1,2,10,8,3,8,2)
#(i)
bar <- foo[foo>=5]
#(ii)
foo[-which(x=foo>=5)]
## [1] 1 2 3 2
baz <- matrix(data=bar,nrow=2,ncol=3,byrow=T)
#(i)
baz[baz==8] <- baz[1,2]^2
#(ii)
all(baz<=25&baz>4)
## [1] TRUE
qux <- array(data=c(10,5,1,4,7,4,3,3,1,3,4,3,1,7,8,3,7,3),dim=c(3,2,3))
#(i)
which(x=qux==3|qux==4,arr.ind=T)
## dim1 dim2 dim3
## [1,] 1 2 1
## [2,] 3 2 1
## [3,] 1 1 2
## [4,] 2 1 2
## [5,] 1 2 2
## [6,] 2 2 2
## [7,] 3 2 2
## [8,] 1 2 3
## [9,] 3 2 3
#(ii)
qux[qux<3|qux>=7] <- 100
foo[c(F,T)]
## [1] 5 1 10 3 2
foo[c(0,1)]
## [1] 7
Exercise 4.4
cat("\"The quick brown fox\n\tjumped over\n\t\tthe lazy dogs\"")
## "The quick brown fox
## jumped over
## the lazy dogs"
num1 <- 4
num2 <- 0.75
paste("The result of multiplying",num1,"by",num2,"is",num1*num2)
## [1] "The result of multiplying 4 by 0.75 is 3"
sub(pattern="tdavies",replacement="Abdulyekeen",x="/Users/tdavies/Documents/RBook")
## [1] "/Users/Abdulyekeen/Documents/RBook"
bar <- "How much wood could a woodchuck chuck"
##(i)
baz <- paste(bar,"if a woodchuck could chuck wood")
##(ii)
gsub(pattern="wood",replacement="metal",x=baz)
## [1] "How much metal could a metalchuck chuck if a metalchuck could chuck metal"
six_p <- "Two 6-packs for $12.99"
#(i)
substr(x=six_p,start=5,stop=10)=="6-pack"
## [1] TRUE
#(ii)
substr(x=six_p,start=19,stop=19) <- "0"
six_p
## [1] "Two 6-packs for $10.99"
Exercise 4.5
party <- rep("National",20)
party[c(1,4,12,15,16,19)] <- "Labour"
party[c(6,9,11)] <- "Greens"
party[c(10,20)] <- "Other"
party
## [1] "Labour" "National" "National" "Labour" "National" "Greens"
## [7] "National" "National" "Greens" "Other" "Greens" "Labour"
## [13] "National" "National" "Labour" "Labour" "National" "National"
## [19] "Labour" "Other"
sex <- rep("M",20)
sex[c(1,5:7,12,14:16)] <- "F"
sex
## [1] "F" "M" "M" "M" "F" "F" "F" "M" "M" "M" "M" "F" "M" "F" "F" "F" "M" "M" "M"
## [20] "M"
sex.fac <- factor(x=sex)
sex.fac
## [1] F M M M F F F M M M M F M F F F M M M M
## Levels: F M
party.fac <- factor(x=party,levels=c("National","Labour","Greens","Maori","Other"))
party.fac
## [1] Labour National National Labour National Greens National National
## [9] Greens Other Greens Labour National National Labour Labour
## [17] National National Labour Other
## Levels: National Labour Greens Maori Other
#(i)
party.fac[sex.fac=="M"]
## [1] National National Labour National Greens Other Greens National
## [9] National National Labour Other
## Levels: National Labour Greens Maori Other
#(ii)
sex.fac[party.fac=="National"]
## [1] M M F F M M F M M
## Levels: F M
sex.newvals <- factor(x=c("M","M","F","F","F","M"))
sex.fac <- factor(x=levels(sex.fac)[c(sex.fac,sex.newvals)])
sex.fac
## [1] F M M M F F F M M M M F M F F F M M M M M M F F F M
## Levels: F M
party.newvals <- factor(x=c("National","Maori","Maori","Labour","Greens","Labour"),levels=levels(party.fac))
party.fac <- factor(x=levels(party.fac)[c(party.fac,party.newvals)])
party.fac
## [1] Labour National National Labour National Greens National National
## [9] Greens Other Greens Labour National National Labour Labour
## [17] National National Labour Other National Maori Maori Labour
## [25] Greens Labour
## Levels: Greens Labour Maori National Other
conf <- c(93,55,29,100,52,84,56,0,33,52,35,53,55,46,40,40,56,45,64,31,10,29,40,95,18,61)
conf.fac <- cut(x=conf,breaks=c(0,30,70,100),include.lowest=TRUE,labels=c("Low","Moderate","High"))
conf.fac[party.fac=="Labour"]
## [1] High High Moderate Moderate Moderate Moderate High Moderate
## Levels: Low Moderate High
conf.fac[party.fac=="National"] # Theres an indication that those who identify as "Labour" have greater confidence than those who identify as "National" when it comes to guessing how well Labour will do in the next election.
## [1] Moderate Low Moderate Moderate Low Moderate Moderate Moderate
## [9] Moderate Low
## Levels: Low Moderate High
Exercise 5.1
lis <- list(seq(from=-4,to=4,length=20),matrix(c(F,T,T,T,F,T,T,F,F),nrow=3,ncol=3),c("don","quixote"),factor(x=c("LOW","MED","LOW","MED","MED","HIGH")))
#(i)
lis[[2]][2:1,2:3]
## [,1] [,2]
## [1,] FALSE FALSE
## [2,] TRUE TRUE
#(ii)
lis[[3]][1] <- sub(pattern="d",replacement="D",x=lis[[3]][1])
lis[[3]][2] <- sub(pattern="q",replacement="Q",x=lis[[3]][2])
cat("\"Windmills! ATTACK!\"\n\t-\\",lis[[3]][1]," ",lis[[3]][2],"/-",sep="")
## "Windmills! ATTACK!"
## -\Don Quixote/-
#(iii)
lis[[1]][lis[[1]]>1]
## [1] 1.052632 1.473684 1.894737 2.315789 2.736842 3.157895 3.578947 4.000000
#(iv)
which(x=lis[[4]]=="MED")
## [1] 2 4 5
bar <- list(facs=lis[[4]],nums=c(3,2.1,3.3,4,1.5,4.9),oldlist=lis[1:3])
#(i)
bar$facs[bar$nums>=3]
## [1] LOW LOW MED HIGH
## Levels: HIGH LOW MED
#(ii)
bar$flags <- rep(x=bar$oldlist[[2]][,3],times=2)
#(iii)
bar$nums[!bar$flags]
## [1] 2.1 3.3 1.5 4.9
#(iv)
bar$oldlist[[3]] <- "Don Quixote"
Exercise 5.2
dframe <- data.frame(person=c("Stan","Francine","Steve","Roger","Hayley","Klaus"),sex=factor(x=c("M","F","M","M","F","M")),funny=factor(x=c("High","Med","Low","High","Med","Med"),levels=c("Low","Med","High")),stringsAsFactors=F)
dframe
## person sex funny
## 1 Stan M High
## 2 Francine F Med
## 3 Steve M Low
## 4 Roger M High
## 5 Hayley F Med
## 6 Klaus M Med
dframe$age <- c(41,41,15,1600,21,60)
dframe
## person sex funny age
## 1 Stan M High 41
## 2 Francine F Med 41
## 3 Steve M Low 15
## 4 Roger M High 1600
## 5 Hayley F Med 21
## 6 Klaus M Med 60
dframe <- dframe[,c(1,4,2,3)]
dframe
## person age sex funny
## 1 Stan 41 M High
## 2 Francine 41 F Med
## 3 Steve 15 M Low
## 4 Roger 1600 M High
## 5 Hayley 21 F Med
## 6 Klaus 60 M Med
Exercise 6.1
foo <- c(13563,-14156,-14319,16981,12921,11979,9568,8833,-12968,8133)
#(i)
foo[is.finite(foo^75)]
## [1] 11979 9568 8833 8133
#(ii)
foo[-which(foo^75==-Inf)]
## [1] 13563 16981 12921 11979 9568 8833 8133
bar <- matrix(c(77875.4,-35466.25,-39803.81,27551.45,-73333.85,55976.34,23764.3,36599.69,76694.82,-36478.88,-70585.69,47032),nrow=3,ncol=4)
#(i)
which(is.nan(bar^65/Inf),arr.ind=T)
## row col
## [1,] 1 1
## [2,] 2 2
## [3,] 3 2
## [4,] 3 3
## [5,] 2 4
#(ii)
bar[!is.nan(bar^67+Inf)]
## [1] 77875.40 -35466.25 -39803.81 27551.45 55976.34 23764.30 36599.69
## [8] 76694.82 -36478.88 47032.00
bar[bar^67!=-Inf]
## [1] 77875.40 -35466.25 -39803.81 27551.45 55976.34 23764.30 36599.69
## [8] 76694.82 -36478.88 47032.00
#(iii)
bar[bar^67==-Inf|is.finite(bar^67)]
## [1] -35466.25 -39803.81 27551.45 -73333.85 23764.30 36599.69 -36478.88
## [8] -70585.69
Exercise 6.2
foo <- c(4.3,2.2,NULL,2.4,NaN,3.3,3.1,NULL,3.4,NA)
#(i)
length(x=foo)
## [1] 8
#(ii)
which(x=is.na(x=foo))
## [1] 4 8
#(iii)
is.null(x=foo)
## [1] FALSE
#(iv)
is.na(x=foo[8])+4/NULL
## numeric(0)
bar <- list(c(7,7,NA,3,NA,1,1,5,NA))
#(i)
names(bar) <- "alpha"
#(ii)
is.null(x=bar$beta)
## [1] TRUE
#(iii)
bar$beta <- which(x=is.na(x=bar$alpha))
bar
## $alpha
## [1] 7 7 NA 3 NA 1 1 5 NA
##
## $beta
## [1] 3 5 9
Exercise 6.3
#(i)
foo <- array(data=1:36,dim=c(3,3,4))
foo
## , , 1
##
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
##
## , , 2
##
## [,1] [,2] [,3]
## [1,] 10 13 16
## [2,] 11 14 17
## [3,] 12 15 18
##
## , , 3
##
## [,1] [,2] [,3]
## [1,] 19 22 25
## [2,] 20 23 26
## [3,] 21 24 27
##
## , , 4
##
## [,1] [,2] [,3]
## [1,] 28 31 34
## [2,] 29 32 35
## [3,] 30 33 36
class(foo)
## [1] "array"
attributes(foo) #implicit
## $dim
## [1] 3 3 4
#(ii)
bar <- as.vector(foo)
bar
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
## [26] 26 27 28 29 30 31 32 33 34 35 36
class(bar)
## [1] "integer"
attributes(bar) #implicit
## NULL
#(iii)
baz <- as.character(bar)
baz
## [1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" "15"
## [16] "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28" "29" "30"
## [31] "31" "32" "33" "34" "35" "36"
class(baz)
## [1] "character"
attributes(baz) #implicit
## NULL
#(iv)
qux <- as.factor(baz)
qux
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
## [26] 26 27 28 29 30 31 32 33 34 35 36
## 36 Levels: 1 10 11 12 13 14 15 16 17 18 19 2 20 21 22 23 24 25 26 27 28 ... 9
class(qux)
## [1] "factor"
attributes(qux) #explicit
## $levels
## [1] "1" "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" "2" "20" "21" "22"
## [16] "23" "24" "25" "26" "27" "28" "29" "3" "30" "31" "32" "33" "34" "35" "36"
## [31] "4" "5" "6" "7" "8" "9"
##
## $class
## [1] "factor"
#(v)
quux <- bar+c(-0.1,0.1)
quux
## [1] 0.9 2.1 2.9 4.1 4.9 6.1 6.9 8.1 8.9 10.1 10.9 12.1 12.9 14.1 14.9
## [16] 16.1 16.9 18.1 18.9 20.1 20.9 22.1 22.9 24.1 24.9 26.1 26.9 28.1 28.9 30.1
## [31] 30.9 32.1 32.9 34.1 34.9 36.1
class(quux)
## [1] "numeric"
attributes(quux) #implicit
## NULL
foo.sum <- is.numeric(foo)+is.integer(foo)
bar.sum <- is.numeric(bar)+is.integer(bar)
baz.sum <- is.numeric(baz)+is.integer(baz)
qux.sum <- is.numeric(qux)+is.integer(qux)
quux.sum <- is.numeric(quux)+is.integer(quux)
myfac <- factor(x=c(foo.sum,bar.sum,baz.sum,qux.sum,quux.sum),levels=c(0,1,2))
myfac
## [1] 2 2 0 0 1
## Levels: 0 1 2
as.numeric(myfac)
## [1] 3 3 1 1 2
foo <- matrix(data=2:13,nrow=3,ncol=4)
foo
## [,1] [,2] [,3] [,4]
## [1,] 2 5 8 11
## [2,] 3 6 9 12
## [3,] 4 7 10 13
as.character(as.vector(t(foo)))
## [1] "2" "5" "8" "11" "3" "6" "9" "12" "4" "7" "10" "13"
foo <- cbind(c(34,23,33,42,41),c(0,1,1,0,0),c(1,2,1,1,2))
foo
## [,1] [,2] [,3]
## [1,] 34 0 1
## [2,] 23 1 2
## [3,] 33 1 1
## [4,] 42 0 1
## [5,] 41 0 2
#(i)
foo <- as.data.frame(foo)
foo
## V1 V2 V3
## 1 34 0 1
## 2 23 1 2
## 3 33 1 1
## 4 42 0 1
## 5 41 0 2
#(ii)
foo[,2] <- as.logical(foo[,2])
foo
## V1 V2 V3
## 1 34 FALSE 1
## 2 23 TRUE 2
## 3 33 TRUE 1
## 4 42 FALSE 1
## 5 41 FALSE 2
#(iii)
foo[,3] <- as.factor(foo[,3])
foo
## V1 V2 V3
## 1 34 FALSE 1
## 2 23 TRUE 2
## 3 33 TRUE 1
## 4 42 FALSE 1
## 5 41 FALSE 2
foo$V3
## [1] 1 2 1 1 2
## Levels: 1 2
Exercise 7.1
plot(-3:3,7:13,type="n",xlab="",ylab="")
text(x=0,y=10,labels="SOMETHING\nPROFOUND")
abline(v=c(-3,3),lty=2,lwd=4,col=8)
abline(h=c(7,13),lty=2,lwd=4,col=8)
arrows(x0=c(-2.5,-2.5,-2.5,2.5,2.5,2.5),y0=c(7.5,10,12.5,7.5,10,12.5),x1=c(-1,-1,-1,1,1,1),y1=c(9.5,10,10.5,9.5,10,10.5))

weight <- c(55,85,75,42,93,63,58,75,89,67)
height <- c(161,185,174,154,188,178,170,167,181,178)
sex <- c("female","male","male","female","male","male","female","male","male","female")
plot(weight,height,type="n",xlab="Weight (kg)",ylab="Height (cm)",main="Height against weight for 10 people")
points(weight[sex=="male"],height[sex=="male"],pch=19)
points(weight[sex=="female"],height[sex=="female"],pch=3,col=2)
legend("topleft",legend=c("male","female"),pch=c(19,3),col=c(1,2))

Exercise 7.2
weight <- c(55,85,75,42,93,63,58,75,89,67)
height <- c(161,185,174,154,188,178,170,167,181,178)
sex <- factor(c("female","male","male","female","male","male","female","male","male","female"))
library(ggplot2)
qplot(weight,height,color=sex,shape=sex,xlab="Weight (kg)",ylab="Height (cm)",main="Height against weight for 10 people") + geom_point(size=4)
## Warning: `qplot()` was deprecated in ggplot2 3.4.0.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Exercise 8.1
#(i)
#write.table(x=quakes[quakes$mag>=5,],file="/Users/tdavies/q5.txt",sep="!",row.names=F)
##(ii)
#q5.dframe <- read.table(file="/Users/tdavies/q5.txt",sep="!",header=T)
library("car")
## Loading required package: carData
data(Duncan)
#(i)
plot(Duncan$education[Duncan$prestige<=80],Duncan$income[Duncan$prestige<=80],xlim=c(0,100),ylim=c(0,100),xlab="Education",ylab="Income")
points(Duncan$education[Duncan$prestige>80],Duncan$income[Duncan$prestige>80],pch=19,col="blue")

#(ii)
#png("/Users/tdavies/dunc.png",width=500,height=500)
plot(Duncan$education[Duncan$prestige<=80],Duncan$income[Duncan$prestige<=80],xlim=c(0,100),ylim=c(0,100),xlab="Education",ylab="Income")
points(Duncan$education[Duncan$prestige>80],Duncan$income[Duncan$prestige>80],pch=19,col="blue")
legend("topleft",legend=c("prestige > 80","prestige <= 80"),pch=c(19,1),col=c("blue","black"))

dev.off()
## null device
## 1
#exer <- list(quakes,q5.dframe,Duncan)
#(i)
#dput(x=exer,file="/Users/tdavies/Exercise8-1Data.txt")
#(ii)
#list.of.dataframes <- dget("/Users/tdavies/Exercise8-1Data.txt")
#list.of.dataframes
x <- 1:20
y <- c(-1.49,3.37,2.59,-2.78,-3.94,-0.92,6.43,8.51,3.41,-8.23,-12.01,-6.58,2.87,14.12,9.63,-4.58,-14.78,-11.67,1.17,15.62)
ptype <- rep(NA,length(x=x))
ptype[y>=5] <- "too_big"
ptype[y<=-5] <- "too_small"
ptype[(x>=5&x<=15)&(y>-5&y<5)] <- "sweet"
ptype[(x<5|x>15)&(y>-5&y<5)] <- "standard"
ptype <- factor(x=ptype)
qplot(x,y,color=ptype,shape=ptype) + geom_point(size=4) + geom_line(mapping=aes(group=1),color="black",lty=2) + geom_hline(mapping=aes(yintercept=c(-5,5)),color="red") + geom_segment(mapping=aes(x=5,y=-5,xend=5,yend=5),color="red",lty=3) + geom_segment(mapping=aes(x=15,y=-5,xend=15,yend=5),color="red",lty=3)

#ggsave(filename="/Users/tdavies/elaborateqplot.tiff")