Chapter 2 – Cached random numbers
# Đoạn mã này sẽ được lưu đệm
set.seed(123)
val <- rnorm(5)
val
## [1] -0.56047565 -0.23017749 1.55870831 0.07050839 0.12928774
Mean of random numbers (dependent chunk)
# Đoạn mã này phụ thuộc vào đoạn mã 'random_numbers'
mean(val)
## [1] 0.1935703
Chapter 1 – Basic Operations
Arithmetic operations
a <- 4
b <- 3
a / b # Chia thông thường
## [1] 1.333333
a %/% b # Chia lấy phần nguyên
## [1] 1
a %% b # Chia lấy phần dư
## [1] 1
Vectorization
x <- 1:5
x^2
## [1] 1 4 9 16 25
Indexing
v <- c(10, 20, 30, 40, 50)
v[2]
## [1] 20
v[c(1, 3, 5)]
## [1] 10 30 50
Logical filtering
nums <- 1:10
nums[nums %% 2 == 0]
## [1] 2 4 6 8 10
Functions
square <- function(x) {
x^2
}
square(1:4)
## [1] 1 4 9 16
Mean of positive values
mean_positive <- function(x) {
x <- x[x > 0]
mean(x)
}
mean_positive(c(-2, 3, 5, -1, 4))
## [1] 4
Handling NA values
x_na <- c(1, 2, NA, 4)
mean(x_na, na.rm = TRUE)
## [1] 2.333333
Data frame
df <- data.frame(
name = c("A", "B", "C"),
score = c(8, 9, 7)
)
df$score
## [1] 8 9 7
Chapter 2 – Exercises
Mean of Positive Values (Pipeline)
library(magrittr)
set.seed(123)
rnorm(100) %>%
replace(. < 0, NA) %>%
mean(na.rm = TRUE)
## [1] 0.7889055
Root Mean Square Error (RMSE)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
df_rmse <- data.frame(
t = c(3, 5, 2, 7),
y = c(2.5, 5.1, 2.2, 6.8)
)
df_rmse %>%
mutate(sq_error = (t - y)^2) %>%
summarise(rmse = sqrt(mean(sq_error)))
## rmse
## 1 0.2915476