R программ суулгах: http://www.r-project.org/.
RStudio суулгах: http://www.rstudio.com/.
Нэмэлт программ, ажиллагаа шаардахгүйгээр шууд үр дүн, тайлан хийж болно.
Зураг 1. R программ ашигласнаар үүсэх давуу тал
Жил бүр илүү олон эрдэмтэд ашигласаар байна! 2025 оны 2-р сарын байдлаар Comprehensive R Archive Network (CRAN)-д 22000 гаруй багц (мөн Github repositories дотор олон мянган багц) бүртгэгдсэн байна!
Зураг 2. R программ ашигласнаар үүсэх давуу тал
Төрөл бүрийн дүн шинжилгээнүүдийг өөр өөр төрлөөр нэг талбар дээр харуулах бүрэн боломжтой байдаг.
Зураг 3. Эдгээр бүх графикыг R ᠋программ дээр хийсэн.
Зураг 4. RStudio программыг суулгасны дараа нээхэд дээрх байдалтай харагдана
Зураг 5. RStudio программын үндсэн самбарууд
Нэмэх, хасах үйлдлүүдийг ашиглан үр дүн шууд гарган авах боломжтой.
1 + 1
## [1] 2
10 - 1
## [1] 9
Үржих, хуваа үйлдлүүд мөн адил байна.
2 * 2
## [1] 4
8 / 2
## [1] 4
Зэрэгт дэвшүүлэхдээ ^ тэмдэгтийг ашиглана.
2^3
## [1] 8
3^4
## [1] 81
Эдгээр үйлдлүүдийг нэгэн зэрэг ашиглах боломжтой бөгөөд бодолтын дараалал нь R эх хэлэнд програмчлагдсан байдаг.
2 + 16 * 24 - 56 / (2 + 1) - 457
## [1] -89.66667
Энгийн бодолт хийж үзье: Тойргийн радиус 5 см бол талбайг олно уу? Бодолтын томьёо нь \[Area = pi * r^2\] байх бөгөөд R программын консол дээр дараах байдлаар бичнэ.
3.1416 * 5^2
## [1] 78.54
Мөн математик тооцооны тогтмол утгууд R эх хэлэнд програмчлагдсан байдаг. Иймд шууд pi гэж бичиж болно.
pi * 5^2
## [1] 78.53982
Та <- хуваарилах операторыг ашиглан нэрлэсэн объектуудад мэдээлэл өгч болно.
Four_letters <- "ACDC"
Four_letters
## [1] "ACDC"
Өөрөөр хэлбэл, “ACDC” объектод Four_letters утга оноож (оноосон нэр) өгснөөр Four_letters-ийг дуудахад “ACDC”-аар хариу өгдөг.
my_birthday_month <- 9
my_birthday_month
## [1] 9
Бодолтын_хариу <- 2 + 16 * 24 - 56 / (2 + 1) - 457
Бодолтын_хариу
## [1] -89.66667
Анхаараарай! Бага (<) болон хасах (-) тэмдгүүдийн хооронд зай авахгүй, шууд бичигдсэн <- байх хэрэгтэй.
Объектуудын нэрэнд зөвхөн дараах зүйлс багтаж болно:
Цаашид анхаарах энгийн дүрмүүд:
Forest_data001 <- 2025
Forest_data001
## [1] 2025
F_data_001 <- 2024
F_data_001
## [1] 2024
Data_1 <- "Том үсгээр эхэлсэн 1-р өгөгдөл"
Data_1
## [1] "Том үсгээр эхэлсэн 1-р өгөгдөл"
data_1 <- "жижиг үсгээр эхэлсэн 1-р өгөгдөл"
data_1
## [1] "жижиг үсгээр эхэлсэн 1-р өгөгдөл"
Объектыг нэрлэх, код бичих анхаарах зүйлс:
Өгөгдлийн төрлүүд нь R-дээрх утгууд, өгөгдлүүд хэрхэн хадгалагдахыг тодорхойлдог.
Бид typeof() функцыг ашиглан объектын төрөл, горимыг тодорхойлох боломжтой. Өгөгдлийн үндсэн төрлүүд нь:
Тоо эсвэл текстийн мөр зэрэг нэг төрлийн объектыг скаляр (scalar) бүтэцтэй өгөгдөл гэж нэрлэдэг.
a <- 100
a #
## [1] 100
b <- 3 / 100
b
## [1] 0.03
c <- (a +b) / b
c
## [1] 3334.333
a,b,c өгөгдөлүүд нь ямар нэг (ганцхан ширхэг) тоо агуулсан учир скаляр (scalar) бүтэц болно.
d <- "species"
d #
## [1] "species"
e <- "тархалт"
e
## [1] "тархалт"
f <- "When is the next pause again?"
f
## [1] "When is the next pause again?"
d,e,f өгөгдөлүүд нь ямар нэг тэмдэгт (“” дотор учраас ганцхан тэмдэгт гэж үзнэ) агуулсан учир скаляр (scalar) бүтэц болно.
Вектор (vector) бүтэцтэй объект нь нэг объект хэлбэрээр хадгалагдсан хэд хэдэн скаляруудын нэгдэл юм. Скаляруудын нэгэн адил векторууд нь тоон, логик, тэмдэгтийн төрлүүд байж болох ч тэдгээрийг хэзээ ч хамтад нь бичиж болохгүй!
Зураг 6. Скаляр болон вектор өгөгдлийн дүрслэл
R дээр вектор бүтэцтэй өгөгдөл үүсгэх олон арга бий. Жишээлбэл:
| Function | Example | Result |
|---|---|---|
| c(a, b, …) | c(1, 3, 5, 7, 9) | 1, 3, 5, 7, 9 |
| a:b | 1:5 | 1, 2, 3, 4, 5 |
| seq(from, to, by, length.out) | seq(from = 0, to = 6, by = 2) | 0, 2, 4, 6 |
| rep(x, times, each, length.out) | rep(c(7, 8), times = 2, each = 2) | 7, 7, 8, 8, 7, 7, 8, 8 |
c() функц (combine нь нэгтгэх гэсэн үг бөгөөд тэдгээрийг нэгтгэх гэсэн утгатай) хэд хэдэн скалярыг аргумент болгон нэгтгэж, таслалаар тусгаарлаж, тэдгээрийг агуулсан векторыг үүсгэнэ.
vector <- c("value1", "value2", "value3")
vector
## [1] "value1" "value2" "value3"
class(vector)
## [1] "character"
a:b нь аргумент болгон хоёр тоон скаляр бөгөөд эхний a тооноос b тоо хүртэлх 1 нэгжийн алхамтай тооны векторыг үүсгэнэ.
1:8
## [1] 1 2 3 4 5 6 7 8
7.5:1.5
## [1] 7.5 6.5 5.5 4.5 3.5 2.5 1.5
seq() функц нь a:b адил тоон дараалал үүсгэх бөгөөд нэмэлтээр алхам буюу интервалыг (by аргументаар), мөн цувааны уртыг (lenth.out аргументаар) тус тус тодорхойлдог.
seq(from = 1, to = 10, by = 2)
## [1] 1 3 5 7 9
seq(from = 20, to = 2, by = -2)
## [1] 20 18 16 14 12 10 8 6 4 2
rep() нь скаляр (эсвэл вектор)-ыг тодорхой тооны удаа эсвэл хүссэн урттай давтах боломжийг олгодог:
rep(x = 1:3, each = 2, times = 2)
## [1] 1 1 2 2 3 3 1 1 2 2 3 3
rep(x = c(1, 2), each = 3)
## [1] 1 1 1 2 2 2
Өгөгдлийн төрөл дээр суурилан вектор бүтцийг үүсгэж болдог. Жишээ нь:
num_vector <- c(1, 4, 32, -76, -4)
num_vector
## [1] 1 4 32 -76 -4
class(num_vector)
## [1] "numeric"
char_vector <- c("blue", "red", "green", "pink")
char_vector
## [1] "blue" "red" "green" "pink"
class(char_vector)
## [1] "character"
bool_vector <- c(TRUE, TRUE, FALSE) # or c(T, T, F)
bool_vector
## [1] TRUE TRUE FALSE
class(bool_vector)
## [1] "logical"
Матриц (matrix) бүтэц
Зураг 7. Скаляр, вектор болон матриц өгөгдлийн дүрслэл
Матриц өгөгдлийг үүсгэж сурцгаая!
matrix(data = 1:10,
nrow = 5,
ncol = 2)
## [,1] [,2]
## [1,] 1 6
## [2,] 2 7
## [3,] 3 8
## [4,] 4 9
## [5,] 5 10
matrix(data = 1:10,
nrow = 2,
ncol = 5)
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 3 5 7 9
## [2,] 2 4 6 8 10
Мөн бид cbind() (column binding) болон rbind() (row binding) ашиглан олон векторыг нэгтгэж болно.
nickname <- c("kat", "gab", "lo")
nickname
## [1] "kat" "gab" "lo"
animal <- c("dog", "mouse", "cat")
animal
## [1] "dog" "mouse" "cat"
cbind(nickname, animal) # босоо баганан байдлаар матриц өгөгдөл үүсгэх
## nickname animal
## [1,] "kat" "dog"
## [2,] "gab" "mouse"
## [3,] "lo" "cat"
rbind(nickname, animal) # хэвтээ мөр байдлаар матриц өгөгдөл үүсгэх
## [,1] [,2] [,3]
## nickname "kat" "gab" "lo"
## animal "dog" "mouse" "cat"
Векторуудын нэгэн адил матриц дээр математик үйлдлүүд маш сайн ажилладаг. Матрицын зүй тогтлыг сайн ажиглаарай.
(mat_1 <- matrix(data = 1:9,
nrow = 3,
ncol = 3))
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
(mat_2 <- matrix(data = 9:1,
nrow = 3,
ncol = 3))
## [,1] [,2] [,3]
## [1,] 9 6 3
## [2,] 8 5 2
## [3,] 7 4 1
mat_1 * mat_2
## [,1] [,2] [,3]
## [1,] 9 24 21
## [2,] 16 25 16
## [3,] 21 24 9
(step_1 <- matrix(data = 1:6,
nrow = 2,
ncol = 3))
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
(step_2 <- matrix(
data = c("cheetah",
"tiger",
"ladybug",
"deer",
"monkey",
"crocodile"),
nrow = 2,
ncol = 3))
## [,1] [,2] [,3]
## [1,] "cheetah" "ladybug" "monkey"
## [2,] "tiger" "deer" "crocodile"
Merged_matrix <- cbind(c(step_1), c(step_2))
Merged_matrix
## [,1] [,2]
## [1,] "1" "cheetah"
## [2,] "2" "tiger"
## [3,] "3" "ladybug"
## [4,] "4" "deer"
## [5,] "5" "monkey"
## [6,] "6" "crocodile"
Data.frame бүтэц нь матрицаас ялгаатай нь өгөгдлийн хүрээ нь тоон, тэмдэгт, логик багана (эсвэл вектор) агуулж болно.
Зураг 7. Скаляр, вектор, матриц болон дата.фрэйм (data frame) өгөгдлийн дүрслэл
Бодит амьдрал, судалгааны ажил олон төрлийн холимог өгөгдөл ашигладаг бөгөөд цаашдын хичээл, алхамуудад нилээн их ашиглагдах болно. Хөрсний судалгааны ажлын хэсэгхэн үр дүнг жишээ байдлаар харуулья:
| site_id | soil_pH | num_sp | fertilised |
|---|---|---|---|
| A1.01 | 5.6 | 17 | yes |
| A1.02 | 7.3 | 23 | yes |
| B1.01 | 4.1 | 15 | no |
| B1.02 | 6.0 | 7 | no |
site_id <- c("A1.01", "A1.02", "B1.01", "B1.02")
soil_pH <- c(5.6, 7.3, 4.1, 6.0)
num_sp <- c(17, 23, 15, 7)
fertilised <- c("yes", "yes", "no", "no")
soil_fertilisation_data <- data.frame(site_id, soil_pH, num_sp, fertilised)
soil_fertilisation_data
## site_id soil_pH num_sp fertilised
## 1 A1.01 5.6 17 yes
## 2 A1.02 7.3 23 yes
## 3 B1.01 4.1 15 no
## 4 B1.02 6.0 7 no
Бид өөрсдийн өгөгдөл, мэдээллийг вектор, матриц эсвэл data.frame хэлбэрээр R-д хадгалдаг. Зарим тохиолдолд тодорхой шалгуурын дагуу зөвхөн тухайн өгөгдлийг харах, ашиглах эсвэл янз бүрийн байдлаар хуваах, бүлэглэх хэрэгцээ шаардлага үүсэж байдаг.
Бид хаалт [ ] дотор харахыг хүссэн утгуудын байрлалыг зааж өгч болно. Үүнийг ихэвчлэн индексжүүлэх эсвэл хуваалт гэж нэрлэдэг. Индексжүүлэлтийн гол бичиглэл нь: дөрвөлжин хаалт [ ] ба [ , ].
Вектор доторх элементийг [ ] ашиглан тухайн элементийг дуудахын тулд [ ] хаалтанд тухайн элементийн байрлалын дугаарыг бичих хэрэгтэй. Энэхүү байрлалын дугаар нь өгөгдлийн утгаас үл хамааран , хязгаарлагдсан элементүүдийг 1-ээс эхлэн бүхэл тоон дарааллаар дугаарласныг хэлнэ.
Жишээлбэл, 1-ээс 9 хүртлэх сондгой тооны odd_n нэртэй цуваа үүсгэе. Энэхүү вектор өгөгдөл 5 тооноос (1, 3, 5, 7, 9) бүрдэх бөгөөд 1-ээс 5 хүртэл дугаарлагдсан буюу индексжсэн байдаг. odd_n[2] коммандаар 2-р утгыг сонгож уншуулахад 3 гэсэн хариу гарна.
(odd_n <- seq(1, 9, by = 2))
## [1] 1 3 5 7 9
odd_n[2]
## [1] 3
Бид мөн вектор доторх олон байрлалын утгыг c() коммандаар уншуулж болно.
odd_n[c(2, 4)]
## [1] 3 7
Мөн бид тодорхой байрлалд хамаарах утгыг векторын утгын өмнөх хасах (-) тэмдгийг ашиглан харуулахгүй байж болно.
odd_n[-c(1, 2)]
## [1] 5 7 9
odd_n[-4]
## [1] 1 3 5 9
num_vector гэсэн нэр бүхий вектор дээр дараах үйлдлийг хийж үзье:
num_vector <- c(1, 4, 3, 98, 32, -76, -4)
num_vector[4]
## [1] 98
num_vector[c(1, 3)]
## [1] 1 3
num_vector[c(-2, -4)]
## [1] 1 3 32 -76 -4
num_vector[6:10]
## [1] -76 -4 NA NA NA
Data.frame болон матриц дээр мөр, баганын дугаарыг ашиглан элементийг дуудах боломжтой. Үндсэн зарчим тухайн аливаа нэг утга нь мөр, баганын уулзвар дээр байна. data_frame_name[row_number, column_number] бүтэцтэй өгөгдлийн хувьд:
Эдгээр нь та бидний хүүхэд ахуй цагтаа тоглодог байсан онгоц буудах тоглоомын дүрэмтэй яг адилхан юм.
Зураг 9. Онгоц буудах тоглоомын үед мөр, баганын дугаар ашиглан хэлдэг
Бид бүхэн өмнө нь soil_fertilisation_data нэртэй өгөгдөл үүсгэсэн, эндээс зөвхөн судалгааны байршлын дугаарыг, уусмалын орчны дүнтэй харах тохиолдолд:
soil_fertilisation_data
## site_id soil_pH num_sp fertilised
## 1 A1.01 5.6 17 yes
## 2 A1.02 7.3 23 yes
## 3 B1.01 4.1 15 no
## 4 B1.02 6.0 7 no
soil_fertilisation_data[ , c("site_id", "soil_pH")]
## site_id soil_pH
## 1 A1.01 5.6
## 2 A1.02 7.3
## 3 B1.01 4.1
## 4 B1.02 6.0
Өгөгдөл салган харах өөр нэг арга нь $ тэмдэгт ашиглах юм.
soil_fertilisation_data$soil_pH
## [1] 5.6 7.3 4.1 6.0
Бид аливаа нэг нөхцлөөр ҮНЭН эсвэл ХУДАЛ утгыг авахын тулд төрөл бүрийн операторуудыг ашиглаж болно. Доорх жишээнүүдийг харна уу: odd_n нь 1, 3, 5, 7, 9-г агуулж байгаа болно.
| Operator | Description | Example | Result |
|---|---|---|---|
| < and > | less than or greater than | odd_n > 3 | FALSE, FALSE, TRUE, TRUE, TRUE |
| <= and >= | less/greater or equal to | odd_n >= 3 | FALSE, TRUE, TRUE, TRUE, TRUE |
| == | exactly equal to | odd_n == 3 | FALSE, TRUE, FALSE, FALSE, FALSE |
| != | not equal to | odd_n != 3 | TRUE, FALSE, TRUE, TRUE, TRUE |
| x | y | x OR y | odd_n[odd_n >= 5 | odd_n < 3] | 1, 5, 7, 9 |
| x & y | x AND y | odd_n[odd_n >=3 & odd_n < 7] | 3, 5 |
| x %in% y | x match y | odd_n[odd_n %in% c(3,7)] | 3, 7 |
Өгөгдлийн бүтцүүдийг харьцуулан харах нь:
Зураг 10. Өгөгдлийн бүтцүүдийн ялгааг товчоор илэрхийлбэл
Функц нь математикийн алхам бүрийг бичих шаардлагагүйгээр объектууд дээр үйлдлийг хурдан гүйцэтгэх боломжийг олгодог. Өөрөөр хэлбэл, функц нь бидний амьдралыг хялбарчлах ёстой хэрэгсэл юм! Функцид аргумент (эсвэл параметр) буюу утгууд оруулах хэрэгтэй. Дараа нь эдгээр аргументуудыг ашиглан (функц ажиллах бөгөөд) үйлдлүүдийг хийж, гаралтыг үзүүлдэг.
Зураг 11. Функцын ажиллах зарчим
R программын хамгийн энгийн, их хэрэглэгддэг функц нь статистик бодолт болон график гаргах функцууд юм.
a <- c(1:5)
b <- 2
result_add <- a + b
result_add
## [1] 3 4 5 6 7
result_sum <- sum(a, b)
result_sum
## [1] 17
result_mean <- mean(a, b)
result_mean
## [1] 3
a <- 1:100
b <- a^2
par(mfrow = c(2, 2))
plot(a, b, type = "l")
plot(b, a, type = "l")
plot(x = a, y = b, type = "l")
plot(y = b, x = a, type = "l")
Package нь ямарваа эсвэл ижил төсөөтэй сэдвийн хүрээнд хамаарагдах өгөгдлийн багц, тэдгээрийн боломжит функцуудыг агуулсан багц хэрэглүүр юм. Жишээ нь: статистик, орон зайн шинжилгээ, график.
Хэн ч package-г хөгжүүлж, боловсруулж болох бөгөөд бусдтай хуваалцах, ашиглах бүрэн боломжтойв
Comprehensive R Archive Network (CRAN)-аар дамжуулан олон багцуудыг ашиглах боломжтой ба одоо GitHub болон бусад багцын сангууд дээр илүү олон багцууд байршдаг болсон.
Зураг 12. Бүх package-ийн талаарх мэдээлэл https://rdrr.io/
Консолын мөрөнд дээрээ install.packages(“package_name”) гэж бичээд шууд уншуулж болно. Мөн RStudio программын цэсээс RStudio>Tools>Install packages гэж ороод гарч ирсэн цонх дээр package-ийн нэрээ бичээд суулгаж болно.
Зураг 13. Package суулгах харилцах цонх