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

(R (програмчлалын хэл)-с чиглүүлэгдэв)

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

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

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

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 програм Монгол улсад

засварлах

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

Статистикийн зүгээс онцлох зүйлс

засварлах

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]

Програмчлалын зүгээс онцлох зүйлс

засварлах

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

> 2+2
[1] 4

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

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

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

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]

Гол үе шатууд

засварлах

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.

Интерфейсүүд

засварлах

Хамгийн өргөн хэрэглэгддэг 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! хурал

засварлах

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

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

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

R сэтгүүл

засварлах

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

SAS, SPSS болон Stata програмуудтай харьцуулахад

засварлах

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

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

Бичигдэх хэлбэр

засварлах

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

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

 

Функцийн бүтэц

засварлах

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

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)
    
     

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

засварлах

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

засварлах
  Commons: R – Викимедиа зураг, бичлэг, дууны сан

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

засварлах
  1. Загвар:Cite techreport
  2. Hornik, Kurt (November 26, 2015). "R FAQ". The Comprehensive R Archive Network. 2.1 What is R?. Татаж авсан: 2015-12-06.
  3. "R News". CRAN. Татаж авсан: 22 April 2017.
  4. "R license". r-project. Татаж авсан: 6 June 2016.
  5. R language and environment
    • Hornik, Kurt (November 26, 2015). "R FAQ". The Comprehensive R Archive Network. 2.1 What is R?. Татаж авсан: 2015-12-06.
    R Foundation
    • Hornik, Kurt (November 26, 2015). "R FAQ". The Comprehensive R Archive Network. 2.13 What is the R Foundation?. Татаж авсан: 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 (2009-01-06). "Data Analysts Captivated by R's Power". New York Times. Татаж авсан: 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". linuxlinks.com. Татаж авсан: 9 February 2016.
  12. "R: What is R?". R-Project. Татаж авсан: 7 February 2016.
  13. Gentleman, Robert (9 December 2006). "Individual Expertise profile of Robert Gentleman". Archived from 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. Татаж авсан: 2008-01-29.
  15. "R : Past and Future History -- A Free Software Project". cran.r-project.org. Татаж авсан: 2016-05-30.
  16. "Over 16 years of R Project history". Revolutions. Татаж авсан: 2016-05-30.
  17. Ihaka, Ross. "The R Project: A Brief History and Thoughts About the Future" (PDF). stat.auckland.ac.nz.
  18. "Судалгаанд статистикийн аргыг хэрэглэх нь сэдэвт сургалт амжилттай болж өндөрлөлөө". news.num.edu.mn. Татаж авсан: 2016-11-29.
  19. "Монголын R хэрэглэгчдийн групп". facebook.com. Татаж авсан: 2017-05-19.
  20. "МУИС Пресс хэвлэлийн газар". mongolbooks.com. Татаж авсан: 2017-05-19.
  21. "www.magadlal.mn". magadlal.mn. Archived from the original on 2017-12-17. Татаж авсан: 2017-05-19.
  22. Eddelbuettel, Dirk; Francois, Romain (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" (PDF). 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. Political Methodology Section, American Political Science Association. 11 (1): 20–22. Archived from the original (PDF) on 2006-07-21. Татаж авсан: 2006-08-03.
  27. "CRAN Task View: Graphic Displays & Dynamic Graphics & Graphic Devices & Visualization". The Comprehensive R Archive Network. Archived from the original on 2016-09-26. Татаж авсан: 2011-08-01.
  28. "Rd format". hep.by. Archived from the original on 13 Есдүгээр сар 2018. Татаж авсан: 9 February 2016.
  29. Dalgaard, Peter (2002). Introductory Statistics with R. New York, Berlin, Heidelberg: Springer-Verlag. pp. 10–18, 34. ISBN 0387954759.
  30. Ihaka, Ross; Gentlman, Robert (Sep 1996). "R: A Language for Data Analysis and Graphics" (PDF). Journal of Computational and Graphical Statistics. American Statistical Association. 5 (3): 299–314. doi:10.2307/1390807. Татаж авсан: 2014-05-12.
  31. "Data structures · Advanced R." adv-r.had.co.nz. Татаж авсан: 2016-09-26.
  32. R Core Team. "Print Values". R Documentation. 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". Archived from the original on 2016-09-26. Татаж авсан: 2017-05-18.
  42. "Syntax Highlighting". Kate Development Team. Archived from 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". Archived from the original on 2015-07-13. Татаж авсан: 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. https://github.com/JuliaInterop/RCall.jl. {{cite web}}: Missing or empty |title= (help)
  52. "useR!"
  53. "useR! 2004 - The R User Conference". 27 May 2004. Archived from the original on 2013-09-14. Татаж авсан: 2013-09-18.
  54. R Project (9 August 2013). "R-related Conferences". Archived from the original on 2015-06-29. Татаж авсан: 2013-09-18.
  55. Burns, Patrick (27 February 2007). "Comparison of R to SAS, Stata and SPSS" (PDF). Татаж авсан: 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". statmethods.net. Татаж авсан: 2013-10-28.
  59. Ostrouchov, G., Chen, W.-C., Schmidt, D., Patel, P. (2012). "Programming with Big Data in R".{{cite web}}: CS1 maint: multiple names: authors list (link)