# Answer:
# (a)
weather <- c("stormy", "sunny", "cloudy")
# (b)
more_weather <- c(weather, "hazy", "clear")
# (c)
weather
## [1] "stormy" "sunny" "cloudy"
more_weather
## [1] "stormy" "sunny" "cloudy" "hazy" "clear"
\[ \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} \]
# Answer:
# (a)
identity_matrix <- matrix(
c(1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1),
nrow = 4,
ncol = 4,
byrow = TRUE
)
identity_matrix
## [,1] [,2] [,3] [,4]
## [1,] 1 0 0 0
## [2,] 0 1 0 0
## [3,] 0 0 1 0
## [4,] 0 0 0 1
# (b)
v <- c(0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1)
gender_factor <- factor(v)
levels(gender_factor) <- c("Male", "Female")
gender_factor
## [1] Male Male Male Female Female Female Female Male Male Male
## [11] Female Female Female Female Male Male Male Female Female Female
## [21] Female Male Male Male Female Female Female Female Male Male
## [31] Male Female Female Female Female
## Levels: Male Female
# (c)
matrix_7x5 <- matrix(gender_factor, nrow = 7, ncol = 5)
matrix_7x5
## [,1] [,2] [,3] [,4] [,5]
## [1,] "Male" "Male" "Male" "Male" "Male"
## [2,] "Male" "Male" "Male" "Male" "Male"
## [3,] "Male" "Male" "Male" "Male" "Male"
## [4,] "Female" "Female" "Female" "Female" "Female"
## [5,] "Female" "Female" "Female" "Female" "Female"
## [6,] "Female" "Female" "Female" "Female" "Female"
## [7,] "Female" "Female" "Female" "Female" "Female"
matrix_5x7 <- matrix(gender_factor, nrow = 5, ncol = 7)
matrix_5x7
## [,1] [,2] [,3] [,4] [,5] [,6] [,7]
## [1,] "Male" "Female" "Female" "Male" "Female" "Female" "Male"
## [2,] "Male" "Female" "Female" "Male" "Male" "Female" "Female"
## [3,] "Male" "Male" "Female" "Female" "Male" "Female" "Female"
## [4,] "Female" "Male" "Female" "Female" "Male" "Male" "Female"
## [5,] "Female" "Male" "Male" "Female" "Female" "Male" "Female"
matrix_7x5[6, 1:5]
## [1] "Female" "Female" "Female" "Female" "Female"
matrix_5x7[1:5, 3]
## [1] "Female" "Female" "Female" "Female" "Male"
(Based on Chapter 2.4 Exercise 1)
Assume 4 binary digit accuracy for the following computations.
0.0100
0.1100
Output only the non-missing elements of a vector x <- c(2, 4, NA, NA, 9, NaN, 0)
Hint: Create a logical vector that indicates whether each element of x is missing (NA or NaN) or not. Use (a transformed version of) this logical vector to extract the elements of x that are not missing, which are 2, 4, 9, 0.
x<- c(2, 4, NA, NA, 9, NaN, 0)
# Answer:
x <- c(2, 4, NA, NA, 9, NaN, 0)
not_missing <- !is.na(x)
x[not_missing]
## [1] 2 4 9 0
Write code that takes a vector x and outputs the vector x with all of its missing (NA or NaN) values replaced with mean(x, na.rm = TRUE).
Make sure that your code works for the following vectors as x:
x <- c(2, NA, 5, 7, NA, 10, 12, NA)
x <- c(8, 7, 333, NA, NaN)
x <- c(0, 0, 0, 0, 0)
# Answer:
x <- c(2, NA, 5, 7, NA, 10, 12, NA)
x[is.na(x) | is.nan(x)] <- mean(x[!(is.na(x) | is.nan(x))])
print(x)
## [1] 2.0 7.2 5.0 7.0 7.2 10.0 12.0 7.2
# Second case
x <- c(8, 7, 333, NA, NaN)
x[is.na(x) | is.nan(x)] <- mean(x[!(is.na(x) | is.nan(x))])
print(x)
## [1] 8 7 333 116 116
# Third case (no missing values)
x <- c(0, 0, 0, 0, 0)
x[is.na(x) | is.nan(x)] <- mean(x[!(is.na(x) | is.nan(x))])
x
## [1] 0 0 0 0 0