simSexHeight <- function(n) {
m <- matrix(c(runif(n), rnorm(n)), ncol=2)
# runif生成均勻分布的隨機數(下限0、上限1)
# rnorm常態分佈的隨機數(mean=0、sd=1)
# matrix形成兩行的矩陣
draw <- function(mr) { # mr = one row of m
if (mr[1] < 0.505) {
sex <- "M"
cm <- round((170 + 7*mr[2]),2)
# 生成的數字小於0.505,則sex、cm照以上設定,取小數點第二位
} else {
sex <- "F"
cm <- round((160 + 5*mr[2]),2)
# 生成的數字不是小於0.505,則sex、cm照以上設定,取小數點第二位
}
return(c(sex, cm))
}
person <- as.data.frame(t(apply(m, 1, draw)))
# t行列轉換
# apply列出m、draw,按行做計算
# 把person轉換成data.frame
names(person) <- c("Gender", "Height")
# 變項名稱為"Gender", "Height"
return(person)
}
##### Gender Height
## 1 M 170.19
## 2 F 167.35
## 3 F 158.86
## 4 F 159.09
## 5 F 159.45
## 6 F 154.3
## 7 F 164.67
## 8 M 154.93