R програмын статистик болон математикийн арга аппаратуудыг өргөнөөр тусгасан явдал хүмүүсийг өөртөө их татдаг бололтой. Мөн үүн дээр үнэгүй гэдэг нь ч том хөшүүрэг юм. Гэвч үүнийг сонирхон суралцагчид болон эхлэн хэрэглэгчдийн дийлэнхийнх нь хэрэглээ учир нь үл олдох эсвэл баримжаалах төдий баахан текстийг (уг нь код гэнэ) ямар нэг зүйлээс хуулж эсвэл дуурайж бичих байдалтай байдаг. Ингэж эхлэх нь R-ыг хэрэглэж сурах хамгийн хэцүү, тойруу арга юм. Яагаад вэ гэдгийг тайлбарлая.

  1. Та R-д өгөгдөлд холбогдох объектын ямар ямар төрөл хэлбэр байдгийг бүгдийг нь мэдэх үү? Мэдэхгүй хүн байгаад тэр маань ямар нэг жишээ, заавар дагаж хийгээд өгөгдлөө R програмд орууллаа гэж бодъё. Тэгвэл дараа ямар нэг зүйл өөрчлөгдөхөд л бүх зүйл "дуусаа".
  2. R програмын хэрэглээ заавал ямар нэг package буюу багцад агуулагдах хэн нэг функц эсвэл оператор дуудаж ашиглах байдлаар явагддаг. Хэрэв та R-ыг огт мэддэггүй бөгөөд ямар нэг зүйлд шууд хэрэглэх гэнэтийн чухал шаардлага гарсан бол аль нэг багцын тодорхой нэг функцийг яаж хэрэглэхэд анхаарлаа хандуулна. Тэгвэл ийм багц 2019 оны эхний байдлаар 13 мянга гаруй байна. Эдгээрт агуулагдах функц гэвэл замбараагүй тоо гарна. Та нэгийнх нь учрыг олсон ч нөгөөдүүл нь өмнөхтэй чинь адил байна гэж үгүй.
  3. "Гүүгэлдлээ". Жишээлбэл stackoverflow дээрээс зөв буруу, тохирох тохирохгүй нь мэдэгдэхгүй нэг хариулт олж аваад ашиглатал ажиллаж байна. Энэ удаад "аз таарлаа". Үргэлж аз таарах уу? Дандаа л "гүүгэлдсээр" байх уу?
  4. Өвдөл цөвдөл цуглуулах байдлаар олж авч буй мэдлэг хэзээ бүрэн гүйцэд, системтэй мэдлэг болох тухай та бод доо.

Гэтэл R бол статистикийн програмууд дундаа сурч эзэмшихэд хамгийн хүнд нь юм. Үүнийг бүр тамхи татаж сурахтай ч зүйрлэж хэлсэн байдаг. Энэ ч аргагүй юм л даа. Учир нь R бол програмчлалын хэл билээ. Өмнө нь дуурайж бичиж байсан, хуулж тавьж байсан текст чинь чухам энэ хэлний бичигдэх хэлбэр, дүрмийн дагуу зохиож бичсэн програмын код юм. Файлаас өгөгдөл оруулаад түүнийхээ дунджийг олох чинь ч бас л програм бичиж байнаа л гэсэн үг. Танд л гэж хэлэхэд R хэлийг эхнээс нь системтэй сурвал дараах ашиг тустай.

  1. R-ыг ашиглаж хүссэн зүйлээ хийх буюу ямар ч төрлийн програм бичих чадвартай болно.
  2. Ямар ч package буюу багц, функцүүдийг бүрэн дүүрэн ашиглах нөхцөл бүрдэнэ.
  3. Ямар ч кодыг шууд уншиж ойлгох чадвартай болно.
  4. Цаашид бие даан хөгжихөд илүү хялбар болно.

Гэхдээ дээр дурдсан шиг байхын тулд та өөрийнхөө ашиглах статистик болон математикийн арга аппаратуудын талаарх онолын мэдлэг эзэмшсэн байх шаардлагатай гэдгийг надаар хэлүүлэх юун. 

Та энэхүү програмчлалын хэлийг уг үндсээс нь эхлэн системтэй сурч, бүрэн гүйцэд мэдлэгтэй болсоноор эрдэм шинжилгээ, судалгааны ажилдаа шинэ шинэ үр дүн гаргаж, амжилтад хүрэх нэг чухал хүчин зүйл болно гэдэгт итгэлтэй байна. Үүнийг бичигч би вээр өмнө нь статистикийн өөр програмууд (SPSS, Minitab, Matlab зэрэг) хэрэглэж байсан бөгөөд сүүлийн жилүүдэд эрдмийн ажилдаа ахиц гаргах, зэрэг цол хамгаалах зорилгоор энэхүү R програмыг сурч эзэмшсэн. Мөн миний бие өмнө нь цөөнгүй програмчлалын хэл судалж байсан туршлагатай бөгөөд уг туршлагынхаа дагуу R-ыг програмчлалын хэл гэдэг өнцгөөс нь тодорхой төлөвлөгөө, дэс дараа буюу системтэй судалсан. Өөрөөр хэлбэл ямар нэгэн сонирхолтой эсвэл гайхамшигтай зүйл уруу үсчиж сатаарах эсвэл дунд нь завсарлах явдал огт гаргаагүй. Одоо түүнийхээ ачаар онол, практикийн хувьд шинэлэг математик загвар, тооцооллын шинэ арга, аргачлал боловсруулж байна. Ийм зүйл хийхэд өмнө нь хэний ч хийж байгаагүй янз бүрийн тооцоо хийх, тоон туршилт явуулах шаардлага алхам тутамд тулгарч байгаа бөгөөд чухам энд л програмчлалын R хэлийг өндөр түвшинд сурч эзэмшсэний хэрэг гарч байна.

R-ыг сурахдаа дараах байдлаар эхлэх хэрэгтэй.

  1. Өгөгдөлд холбогдох объектын төрөл буюу класс, түүний бүтэц структур, элемент уруу нь хандах арга
  2. Операторууд. + - гээд л эхэлнэ. + - гээд голж, хайхралгүй үлдээж болохгүй. Бас явцын дунд шинэ оператор ч гарч ирж мэднэ. Жишээлбэл хоолой буюу утга дамжуулах %>% оператор гэх мэт. За тэгээд та өөрөө ч оператор буюу шинэ үйлдэл тодорхойлж болно. Жишээлбэл би өөрийн хэрэгцээнд зориулж тэмдэгт мөр буюу текст залгадаг %.% (PHP хэлний . шиг) оператор тодорхойлоод ашиглаж байлаа. Мөн операторуудын ажиллах дэс дарааг нэг харчихад илүүдэхгүй.
  3. Нөхцөлт болон давтагдах тушаалын оператор болон функц. Товчхондоо хаашаа вэ, хэдэн удаа вэ гэдгийг эдгээрийн тусламжтай л аргална.
  4. Функц. Яаж зарлах, дуудах, аргумент буюу оролт зааж өгөх, утга буюу үр дүнг нь хүлээн авах гэдэг бол хамгийн наад захын судлах зүйл. Цаашлаад рекурсив функц, утга өөрчлөх функц, нэргүй функц, инфикс функц гээд зөндөө л зүйл бий.
  5. Хувьсагч болон функцийн үйлчлэх хүрээ. Утга хольж солихгүй байхаас эхлээд CPU, RAM зэрэг нөөц хэмнэлттэй ашиглахтай ч холбогдоно.

Дээрх таван зүйл бол R програмыг хэрэглэхэд зайлшгүй шаардлагатай суурь ойлголт юм.

Эцэст нь нэмж хэлэхэд их хэмжээтэй өгөгдөл боловсруулах, нүсэр тооцоолол явуулах зэрэгт R програмыг хэрхэн үр ашигтай ашиглах буюу R хэл дээр хурдан ажиллах код бичих тухай нэмж судлах шаардлага орчин үед зайлшгүй тулгарах болсон. Энэ чиглэлд ч миний бие ихээхэн мэдлэг, туршлга хуримтлуулсан. Яг энэ чиглэлд гүнзгийрээд ирэхээр дээр дурдсан шиг гүүгэлдэх аргаар явах нь огт боломжгүй болдог юм билээ. Ингээд R хэл болон R програмын ажиллах зарчим (жишээлбэл санах ой ашиглалт гэх мэт) бас холбогдох бусад зүйлсийн (жишээлбэл програмчлалын C++ хэл) тухай системтэй мэдлэг, програмын код бичих туршлагадаа л найдах үлдэнэ дээ. Мөн R дээр олон дахин давтагддаг ажлаа package-лаад тавьчихвал их амар болдог. Үүний тулд өөрөө функц зарлаж чаддаг байх хэрэгтэй болно. Тийнхүү хөгжүүлсэн package-аасаа олон нийтэд хэрэг болох зүйл байвал CRAN уруу оруулчихвал их л буянтай ажил болно шүү дээ. R програм яг үнэндээ энэ мэт олон нийтийн сайн дурын оролцооны хүчинд л өдий зэрэгт хүрсэн. Миний бие ч бас тэдэнтэй адил өөрийн хөгжүүлсэн ганц хоёр package буюу багцаа CRAN уруу оруулаад, цаашид арчилж явах үүрэг хүлээсэн билээ.