R (программчлалын хэл)

R нь статистик тооцоолол, график дүрслэлд зоиулагдсан нээлттэй эх бүхий программчлалын хэл болон програм хангамж бөгөөд Статистик Тооцооллын R Сан дээр түшиглэдэг. R хэлийг статистикчид, өгөгдлийн уурхайчид статистикийн програм хангамж зохиох, мэдээлэлд дүн шинжилгээ хийх зэрэгт өргөн хэрэглэхийн зэрэгцээ сүүлийн жилүүдэд түүний хэрэглээ бусад чиглэлд ч хурдацтай өсөн нэмэгдэж байна.

R бол GNU програм хангамж юм. R програмын эх код C, Fortran, R хэл дээр бичигдсэн. R програмыг GNU GPL Олон Нийтийн Лиценз-ээр голлох үйлдлийн системүүд дээр үнэ төлбөргүй ашиглах боломжтой. Мөн R нь командын мөрнөөс ажилладаг тул зориулалтын график интерфейс бүхий програмаар дамжуулан ашиглах нь зүйтэй.

 Түүх 
R нь John Chambers гэдэг хүний Bell Labs-д ажиллаж байх үедээ зохиосон програмчлалын S хэл дээр тулгуурласан. Эдгээрийн хооронд хэдэн чухал ялгаа байдаг ч S хэлээр бичигдсэн кодын ихэнх нь R дээр шууд ажилладаг.

R програмыг Росс Ihaka , Роберт Gentleman нар Шинэ Зеландын Веллингтон Их Сургууль-д байх үедээ зохиосон бөгөөд одоогоор R Development Core Team хөгжүүлж байна. S хэлний зохиогч Chambers уг багийн нэг гишүүн юм. R гэх нэр нь түүнийг анхлан зохиогчдын нэр болон гол суурь нь болсон S хэлний нэртэй холбоотой. Төсөл 1992 онд санаачлагдсан бол анхны хувилбар нь 1995 онд гарсан. Харин тогтвортой beta хувилбар нь 2000 онд гарсан.

 R програм Монгол улсад 
R програмыг хэрэглэх, R хэлийг судлах явдал Монгол улсад улам бүр дэлгэрч буй бөгөөд үүнийг гэрчлэх мэдээ материал, нийгмийн сүлжээний бүлгэмүүд цөөнгүй байна. Зарим их, дээд сургууль сургалтын хөтөлбөртөө R програмыг нэвтрүүлснээс тухайлан Монгол Улсын Их Сургууль дээр хэрэгжиж буй Статистик хөтөлбөрийг дурдаж болно. Монгол хэл дээрх ном, сурах бичиг, гарын авлагын хувьд Г.Махгал, Ш.Мөнгөнсүх нар бичиж Б.Магсаржав хянан тохиолдуулсан Статистик програмчлалын R хэл сурах бичиг хэвлэгдэн гарчээ.

 Статистикийн зүгээс онцлох зүйлс 
R, түүний сангууд олон янзын статистик болон график хэрэгсэл агуулдаг. Тухайлбал шугаман болон шугаман бус загвар, статистик шинжүүрүүд, хугацаан цувааны шинжилгээ, бүлэглэх, ангилах болон бусад олон шинжилгээ дурдаж болно. Мөн R програмын нэмэлт багцууд олон янзын функц болон бусад зүйлс агуулдаг. R хэлний стандарт функцүүдийн олонх нь R хэл дээрээ бичигдсэн бөгөөд нэмэлтээр C, C++, Fortran хэл дээрх код оруулан ажиллуулж болдог. Өндөр мэдлэг чадвартай хэрэглэгчид C, C++, Java, .NET болон Python зэрэг хэл дээр R хэлний объект уруу шууд хандаж ажиллах код бичдэг. Статистик тооцооллын бусад хэлнүүдээс ялгарах гол давуу тал бол R хэлний объект-хандалтат чанар бөгөөд энэ нь S хэлнээс түүнд дамжсэн билээ. R хэлний бас нэг онцлог lexical scoping зарчмыг хэрэгжүүлсэн явдал юм.

Түүний өөр нэг давуу тал бол математикийн тэмдэгт агуулсан, хэвлэлийн шаардлагад нийцэх график диаграм байгуулдаг явдал юм. Мөн нэмэлт багцуудын тусламжтай динамик болон интерактив график диаграм ч байгуулах боломжтой.

R програм өөрийн баримт бичиг боловсруулалтын LaTeX төст Rd гэх форматтай.

 Програмчлалын зүгээс онцлох зүйлс 
R нь шууд хөрвүүлэгдэн ажилладаг хэл бөгөөд хэрэглэгчид түүнийг командын мөрний хөрвүүлэгчээр дамжуулж ашигладаг. Хэрэв хэрэглэгч R хэлний командын мөрөнд 2+2 гэж бичээд enter дарвал компьютер доор үзүүлсэн шиг 4 гэсэн хариу өгнө:> 2+2
[1] 4R програм энэ тооцоог тус бүр нэг элементтэй хоёр векторын нийлбэр гэж ойлгох тул үр дүн нь нэг элементтэй вектор байна. [1] угтвар векторын эхний элемент хэвлэгдсэнийг илтгэнэ (энэ нь тооцооны үр дүн олон мөр дамнан хэвлэгдэх үед илүү ашиг тустай байдаг).

APL , MATLAB зэрэгтэй адил R хэл матриц дээрх арифметик үйлдлүүдийг дэмждэг. R-ын өгөгдлийн бүтцэд вектор, матриц, массив, датафрейм (өгөгдлийн сангийн хүснэгттэй төстэй), лист зэрэг багтдаг. Эдгээр объектуудаас гадна регрессийн загвар, хугацаан цуваа болон гео-орон зайн координат зэрэг өөр бусад төрлийн объектууд байдаг. Мөн хэрэглэгч өөрөө шинээр объектын класс тодорхойлж ашиглах боломжтой. Скаляр төрлийн өгөгдлийн хувьд энэ нь бие даасан өгөгдлийн бүтэц болдоггүй. Үүний оронд скаляр утгыг нэг урттай вектор гэж үздэг.

R нь зарим функцийн хувьд функц бүхий процедур хандалтат програмчлал болон ерөнхий функц бүхий объект хандалтат програмчлалын аль алийг дэмждэг. Ерөнхий функц нь түүний аргументаар дамжин ирсэн объектын классаас хамааран ажилладаг. Өөрөөр хэлбэл ерөнхий функц объектын классыг ялгаад улмаар харгалзах функц уруу замчилж өгдөг. Жишээлбэл print нэртэй ерөнхий функц ашиглан бараг бүх төрлийн объектын утгыг хэвлэх тушаалыг  print(objectname)  хэлбэрээр өгч болдог.

 Багц 
R програмын боломж бололцоог хэрэглэгчдийн үүсгэсэн багц нэмж суулгах замаар жишээлбэл мэргэжлийн статистикийн арга техник, график төхөөрөмж (тухайлбал ggplot2 багц, зохиогч нь Hadley Wickham), импорт/экспортын боломжууд, тайлан гаргах хэрэгсэл (knitr, Sweave) гэх мэтээр өргөтгөх боломжтой. Тэдгээр багцууд голдуу R заримдаа Java, C, C++, Fortran хэл дээр бичигдсэн байдаг.

R програмын суулгацад агуулагдах үндсэн багцуудаас гадна Comprehensive R Archive Network (CRAN), Bioconductor, Omegahat, GitHub болон бусад агуулахуудад (2017 оны 4 сарын байдлаар) 10500 нэмэлт багц байна.

 Гол үе шатууд 
R програмын өөрчлөлтийн түүхчилсэн жагсаалт CRAN дээр хадгалагдаж байдаг.Changes in versions 3.0.0 onward: Тэдгээрээс заримыг онцлон дор жагсаав.

 Release Date Description 0.16This is the last alpha version developed primarily by Ihaka and Gentleman. Much of the basic functionality from the "White Book" (see S history) was implemented. The mailing lists commenced on April 1, 1997. 0.491997-04-23 This is the oldest source release which is currently available on CRAN. CRAN is started on this date, with 3 mirrors that initially hosted 12 packages. Alpha versions of R for Microsoft Windows and the classic Mac OS are made available shortly after this version. 0.60 1997-12-05 R becomes an official part of the GNU Project. The code is hosted and maintained on CVS. 0.65.11999-10-07 First versions of update.packages and install.packages functions for downloading and installing packages from CRAN.https://cran.r-project.org/src/base/NEWS.0 1.0 2000-02-29 Considered by its developers stable enough for production use. 1.4 2001-12-19 S4 methods are introduced and the first version for Mac OS X is made available soon after. 2.0 2004-10-04 Introduced lazy loading, which enables fast loading of data with minimal expense of system memory. 2.1 2005-04-18 Support for UTF-8 encoding, and the beginnings of internationalization and localization for different languages. 2.11 2010-04-22 Support for Windows 64 bit systems. 2.13 2011-04-14 Adding a new compiler function that allows speeding up functions by converting them to byte-code. 2.14 2011-10-31 Added mandatory namespaces for packages. Added a new parallel package. 2.15 2012-03-30 New load balancing functions. Improved serialization speed for long vectors. 3.0 2013-04-03 Support for numeric index values 231 and larger on 64 bit systems.

 Интерфейсүүд 
Хамгийн өргөн хэрэглэгддэг R хэлний график интерфэйс бүхий хөгжүүлэлтийн цогц орчин бол RStudio юм. Үүнтэй ижил төстэй интерфэйс гэвэл R Tools for Visual Studio програмыг нэрлэж болно.

R хэлэнд зориулагдсан интерфейст мөн Crackle GUI, R Commander, RKWard багтана.

Өргөн хэрэглэгддэг зарим редактор R хэлийг дэмждэг. Тухайлбал Eclipse,
Emacs,
Кейт,
LyX.
Notepad++,
WinEdt,
Tinn-Р.

R хэлийг Python, Perl, Ruby, F# , Julia зэрэг хэд хэдэн скрипт хэлнээс хандаж ашиглах боломжтой байдаг.

 useR! хурал 
R хэрэглэгчдийн албан ёсны жил тутмын цугларалт бол  "useR!" юм."useR!"

Үүний анхны арга хэмжээ useR! 2004 2004 оны тав дугаар сард Австри улсын Вена хотноо зохион байгуулагдсан. Уг арга хэмжээ 2005 онд өнжсөнөөс хойш жил бүр Европ болон Хойд Америкт ээлжлэн зохион байгуулагдаж байна.

Дараагийн хурлуудыг дор жагсаав:
 useR! 2006, Vienna, Austria
 useR! 2007, Ames, Iowa, USA
 useR! 2008, Dortmund, Germany
 useR! 2009, Rennes, France
 useR! 2010, Gaithersburg, Maryland, USA
 useR! 2011, Coventry, United Kingdom
 useR! 2012, Nashville, Tennessee, USA
 useR! 2013, Albacete, Spain
 useR! 2014, Los Angeles, California, USA
 useR! 2015, Aalborg, Denmark
useR! 2016, Stanford, California, USA
 useR! 2017, Brussels, Belgium
useR! 2018, Brisbane, Australia
useR! 2019, Toulouse, France
useR! 2020, St. Louis, Missouri, USA

 R сэтгүүл 
R сэтгүүл нь R төслийн нээлттэй хандалттай, хөндлөнгийн хяналттай сэтгүүл юм. Энд R програмын хэрэглээ болон хөгжүүлэлт тухайлбал R хэлний багц, програмчлалын зөвлөмж, мэдээ зэрэг зүйлс хэвлэгддэг.

 SAS, SPSS болон Stata програмуудтай харьцуулахад 
R програмыг SAS, SPSS, Stata зэрэг өргөн тархсан статистикийн програмуудтай нарийвчлан харьцуулах нь зүйтэй. R нь статистикийн програмуудын харьцуулалт дээр статистикийн шилдэг програмуудтай хамт тэргүүн эгнээнд жагсдаг.

New York Times сонины 2009 оны 1 дүгээр сарын дугаарт өгөгдөл шинжээчдийн дунд R програм хүлээн зөвшөөрөгдөхийн зэрэгцээ SAS зэрэг арилжааны чанартай статистикийн програмын зах зээлд болзошгүй аюул учруулж буй талаар нийтлэл хэвлэгдсэн байдаг.

 Жишээ 

 Бичигдэх хэлбэр 
Дараах жишээнд уг хэлний бичигдэх хэлбэр болон командын мөрнөөс ажиллах байдлыг харууллаа.

R хэлэнд утга оноох оператор болох = тэмдэгтийн оронд <- хоёр тэмдэгтээс тогтох сумыг өргөн хэрэглэдэг.> x <- c(1,2,3,4,5,6)   # Create ordered collection (vector)
> y <- x^2              # Square the elements of x
> print(y)              # print (vector) y
[1]  1  4  9 16 25 36
> mean(y)               # Calculate average (arithmetic mean) of (vector) y; result is scalar
[1] 15.16667
> var(y)                # Calculate sample variance
[1] 178.9667
> lm_1 <- lm(y ~ x)     # Fit a linear regression model "y = f(x)" or "y = B0 + (B1 * x)"
                        # store the results as lm_1
> print(lm_1)           # Print the model from the (linear model object) lm_1

Call:
lm(formula = y ~ x)

Coefficients:
(Intercept)            x
     -9.333        7.000

> summary(lm_1)          # Compute and print statistics for the fit
                         # of the (linear model object) lm_1

Call:
lm(formula = y ~ x)

Residuals:
1       2       3       4       5       6
3.3333 -0.6667 -2.6667 -2.6667 -0.6667  3.3333

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  -9.3333     2.8441  -3.282 0.030453 *
x             7.0000     0.7303   9.585 0.000662 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.055 on 4 degrees of freedom
Multiple R-squared: 0.9583,	Adjusted R-squared: 0.9478
F-statistic: 91.88 on 1 and 4 DF,  p-value: 0.000662

> par(mfrow=c(2, 2))     # Request 2x2 plot layout
> plot(lm_1)             # Diagnostic plot of regression modelФайл:Plots_from_lm_example.svg

 Функцийн бүтэц 
Хэрэглэгчийн функц зохиоход хялбар байдал нь R хэлний нэг давуу тал юм. Функцийн бие доторх объект функцийн дотоод хувьсагч болохын зэрэгцээ функцийн буцаах утга өгөгдлийн аль ч төрөл хэлбэрт байж болдог. Функцийн бүтцийг харуулсан жишээг дор өгөв:functionname <- function(arg1, arg2, ... ){ # функцийн нэр болон аргументуудыг зарлаж байна
  statements                                # тушаалууд
  return(object)                            # object объектыг функцийн утга болгон буцааж байна
}

sumofsquares <- function(x){ # хэрэглэгчийн үүсгэсэн функц
  return(sum(x^2))           # x векторын элементүүдийн квадратуудын нийлбэрийг буцааж байна
}> sumofsquares(1:3)
[1] 14

 Mandelbrot олонлог 
R хэл дээрх дараах богинохон код c комплекс тогтмолын янз бүрийн утганд харгалзах z = z2 + c тэгшитгэлийн эхний 20 итерацаар Mandelbrot олонлогийг дүрслэн үзүүлнэ. Мөн энэ жишээ дараах зүйлсийг харуулна:
 энд caTools багцын хэрэглээ
 комплекс тоон дээрх үйлдэл
 тоон элементүүдээс тогтох олон хэмжээст массивын хэрэглээ (C, Z , X).install.packages("caTools")  # багц суулгах тушаал
library(caTools)             # write.gif функц ашиглахаар харгалзах багцыг дуудаж байна
jet.colors <- colorRampPalette(c("#00007F", "blue", "#007FFF", "cyan", "#7FFF7F",
                                 "yellow", "#FF7F00", "red", "#7F0000"))
dx <- 400                    # урт
dy <- 400                    # өргөн
C <- complex( real=rep(seq(-2.2, 1.0, length.out=dx), each=dy ),
              imag=rep(seq(-1.2, 1.2, length.out=dy), dx ) )
C <- matrix(C,dy,dx)         # комплекс тоонуудыг матриц хэлбэрт шилжүүлэх
Z <- 0                       # Z хувьсагчид 0 утга оноох
X <- array(0, c(dy,dx,20))   # гаралтанд ашиглах 3 хэмжээст массивыг үүсгэж байна
for (k in 1:20) {            # 20 итерац бүхий давталт
  Z <- Z^2+C                 # итерац
  X[,,k] <- exp(-abs(Z))     # үр дүнг хадгалах
}
write.gif(X, "Mandelbrot.gif", col=jet.colors, delay=900)400x400px

 Санал болгох бусад мэдээлэл 

 Comparison of numerical analysis software
 Comparison of statistical packages
 List of numerical analysis software
 List of statistical packages
 Programming with Big Data in R (pbdR)
 Rmetrics

 Цахим холбоос 

 R төслийн албан ёсны веб сайт
 An Introduction to R
 R books, has extensive list (with brief comments) of R-related books
 R-bloggers, a daily news site about R, with 10,000+ articles, tutorials and case-studies, contributed by over 450 R bloggers.
 The R Graphical Manual, a collection of R graphics from all R packages, and an index to all functions in all R packages
 R seek, a custom frontend to Google search engine, to assist in finding results related to the R language
 R Graph Gallery

 Ашигласан материал 

Ангилал:Статистикийн программчлалын хэл
Ангилал:Чөлөөт статистикийн программ хангамж
Ангилал:Чөлөөт тоон программ хангамж
Ангилал:GNU багц