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

Чөлөөт нэвтэрхий толь — Википедиагаас
Харайх: Удирдах, Хайлт
R хэл
R logo.svg
Гарсан он 8 сарын 1993 (1993-08)[1]
Зохиогч Ross Ihaka and Robert Gentleman
Хөгжүүлэгч R Core Team[2]
Тогтвортой хувилбар 3.4.0 (You Stupid Darkness)[3] (4 сарын 21, 2017 (2017-04-21))
Typing discipline Dynamic
Лиценз GNU GPL v2[4]
Файлын өргөтгөл .r, .R, .RData, .rds, .rda
Вэбсайт www.r-project.org

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

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

Түүх[засварлах | edit source]

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

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

R програм Монгол улсад[засварлах | edit source]

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

Статистикийн зүгээс онцлох зүйлс[засварлах | edit source]

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

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

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

Програмчлалын зүгээс онцлох зүйлс[засварлах | edit source]

R нь шууд хөрвүүлэгдэн ажилладаг хэл бөгөөд хэрэглэгчид түүнийг командын мөрний хөрвүүлэгч-ээр дамжуулан ашигладаг. Хэрэв хэрэглэгч R хэлний командын мөрөнд 2+2 гэж бичээд enter дарвал компьютер доор үзүүлсэн шиг 4 гэсэн хариу өгнө:

> 2+2
[1] 4

R програм энэ тооцоог тус бүр нэг элементтэй хоёр векторын нийлбэр гэж ойлгох тул үр дүн нь нэг элементтэй вектор байна. [1] угтвар векторын эхний элемент хэвлэгдсэнийг илтгэнэ (энэ нь тооцооны үр дүн олон мөр дамнан хэвлэгдэх үед илүү ашиг тустай байдаг).

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

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

Багц[засварлах | edit source]

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

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

Гол үе шатууд[засварлах | edit source]

R програмын өөрчлөлтийн түүхчилсэн жагсаалт CRAN дээр хадгалагдаж байдаг.[36] Тэдгээрээс заримыг онцлон дор жагсаав.

Release Date Description
0.16 This 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.49 1997-04-23 This is the oldest source release which is currently available on CRAN.[37] CRAN is started on this date, with 3 mirrors that initially hosted 12 packages.[38] 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.1 1999-10-07 First versions of update.packages and install.packages functions for downloading and installing packages from CRAN.[39]
1.0 2000-02-29 Considered by its developers stable enough for production use.[40]
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.

Интерфейсүүд[засварлах | edit source]

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

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

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

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

useR! хурал[засварлах | edit source]

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

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

Дараагийн хурлуудыг дор жагсаав:

R сэтгүүл[засварлах | edit source]

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

SAS, SPSS болон Stata програмуудтай харьцуулахад[засварлах | edit source]

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

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

Жишээ[засварлах | edit source]

Үндсэн синтакс[засварлах | edit source]

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

R хэлэнд утга оноох оператор болох = тэмдэгтийн оронд <- хоёр тэмдэгтээс тогтох сумыг өргөн хэрэглэдэг.[57]

> 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

Функцийн бүтэц[засварлах | edit source]

Хэрэглэгчийн функц зохиоход хялбар байдал нь R хэлний нэг давуу тал юм. Функцийн бие доторх объект функцийн дотоод хувьсагч болохын зэрэгцээ функцийн буцаах утга өгөгдлийн аль ч төрөл хэлбэрт байж болдог.[58] Функцийн бүтийг харуулсан жишээг дор өгөв:

functionname <- function(arg1, arg2, ... ){ # функцийн нэр болон аргументуудыг зарлаж байна
  statements                                # тушаалууд
  return(object)                            # object объектыг функцийн утга болгон буцааж байна
}

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

Mandelbrot олонлог[засварлах | edit source]

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)
    
    Mandelbrot Creation Animation.gif

Санал болгох бусад мэдээлэл[засварлах | edit source]

Ашигласан материал[засварлах | edit source]

  1. Загвар:Cite techreport
  2. Hornik, Kurt (November 26, 2015). R FAQ. 2015-12-06-д хандсан.
  3. R News.
  4. R license. r-project.
  5. R language and environment
    • Hornik, Kurt (November 26, 2015). R FAQ. 2015-12-06-д хандсан.
    R Foundation
    • Hornik, Kurt (November 26, 2015). R FAQ. 2015-12-06-д хандсан.
    The R Core Team asks authors who use R in their data analysis to cite the software using:
    • R Core Team (2016). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. URL http://www.R-project.org/.
  6. widely used
  7. Vance, Ashlee. "Data Analysts Captivated by R's Power", New York Times, 2009-01-06. 2009-04-28-нд авсан. "R is also the name of a popular programming language used by a growing number of data analysts inside corporations and academia. It is becoming their lingua franca..." 
  8. R's popularity
  9. GNU project
    • GNU R. Free Software Foundation (FSF) Free Software Directory (19 July 2010). 13 November 2012-д хандсан.
    • R Project (n.d.). What is R?. 2009-04-28-д хандсан.
  10. "Wrathematics" (27 August 2011). How Much of R Is Written in R. librestats. 2011-12-01-д хандсан.
  11. 7 of the Best Free Graphical User Interfaces for R. 9 February 2016-д хандсан.
  12. R: What is R?. 7 February 2016-д хандсан.
  13. Gentleman, Robert (9 December 2006). Individual Expertise profile of Robert Gentleman. the original on 23 July 2011-с архивлагдсан. 2009-07-20-д хандсан.
  14. Kurt Hornik. The R FAQ: Why is R named R?. ISBN 3-900051-08-9. Retrieved on 2008-01-29. 
  15. R : Past and Future History -- A Free Software Project.
  16. Over 16 years of R Project history.
  17. Ihaka, Ross. The R Project: A Brief History and Thoughts About the Future.
  18. Судалгаанд статистикийн аргыг хэрэглэх нь сэдэвт сургалт амжилттай болж өндөрлөлөө.
  19. Монголын R хэрэглэгчдийн групп.
  20. Статистик програмчлалын R хэл, 2017.
  21. Статистик програмчлалын R хэл.
  22. (2011) "Rcpp: Seamless R and C++ Integration". Journal of Statistical Software 40 (8). DOI:10.18637/jss.v040.i08.
  23. Temple Lang, Duncan (6 November 2010). Calling R from Java. Nuiton. 18 September 2013-д хандсан.
  24. .NET Framework
  25. Intellipaat. Choosing between SAS, R and Python for Big Data Solution - Intellipaat Blog. intellipaat.com. 2 December 2016-д хандсан.
  26. Jackman, Simon (Spring 2003). "R For the Political Methodologist" (PDF). The Political Methodologist 11 (1): 20–22. Retrieved on 2006-08-03.
  27. CRAN Task View: Graphic Displays & Dynamic Graphics & Graphic Devices & Visualization. The Comprehensive R Archive Network. 2011-08-01-д хандсан.
  28. Rd format. 9 February 2016-д хандсан.
  29. Dalgaard, Peter (2002). Introductory Statistics with R. New York, Berlin, Heidelberg: Springer-Verlag, 10–18, 34. ISBN 0387954759. 
  30. Ihaka, Ross (Sep 1996). "R: A Language for Data Analysis and Graphics". Journal of Computational and Graphical Statistics 5 (3): 299–314. DOI:10.2307/1390807. Retrieved on 2014-05-12.
  31. Data structures · Advanced R..
  32. Print Values. R Foundation for Statistical Computing. 30 May 2016-д хандсан.
  33. The Comprehensive R Archive Network.
  34. Omegahat.net. Omegahat.net. 2016-09-09-д хандсан.
  35. packages available from repositories
  36. Changes in versions 3.0.0 onward:
  37. Index of /src/base/R-0.
  38. ANNOUNCE: CRAN.
  39. https://cran.r-project.org/src/base/NEWS.0
  40. Peter Dalgaard. R-1.0.0 is released. 2009-06-06-д хандсан.
  41. Unknown. StatET for R.
  42. Syntax Highlighting. Kate Development Team. the original on 2008-07-07-с архивлагдсан. 2008-07-09-д хандсан.
  43. Paul E. Johnson and Gregor Gorjanc. LyX with R through Sweave. 2017-04-04-д хандсан.
  44. NppToR: R in Notepad++. sourceforge.net (8 May 2013). 2013-09-18-д хандсан.
  45. Uwe Ligges. RWinEdt: R Interface to 'WinEdt'. 2017-04-04-д хандсан.
  46. Tinn-R. 2017-04-04-д хандсан.
  47. Gautier, Laurent (21 October 2012). A simple and efficient access to R from Python. 18 September 2013-д хандсан.
  48. Florent Angly. Statistics::R - Perl interface with the R statistical program - metacpan.org.
  49. alexgutteridge. GitHub - alexgutteridge/rsruby: Ruby - R bridge.. GitHub.
  50. BlueMountain Capital. F# R Type Provider.
  51. Error on call to Template:cite web: Parameters url and title must be specified.
  52. "useR!"
  53. useR! 2004 - The R User Conference (27 May 2004). 2013-09-18-д хандсан.
  54. R Project (9 August 2013). R-related Conferences. 2013-09-18-д хандсан.
  55. Burns, Patrick (27 February 2007). Comparison of R to SAS, Stata and SPSS. 2013-09-18-д хандсан.
  56. R as competition for commercial statistical packages
  57. R Development Core Team. Assignments with the = Operator. 14 June 2012-д хандсан.
  58. Kabacoff, Robert (2012). Quick-R: User-Defined Functions. 2013-10-28-д хандсан.
  59. Ostrouchov, G., Chen, W.-C., Schmidt, D., Patel, P. (2012). Programming with Big Data in R.

Гадаад холбоосууд[засварлах | edit source]