R(프로그래밍 언어)

R (programming language)
R
R단자
패러다임다중 패러다임: 절차적, 객체 지향적, 기능적, 반사적, 명령적, 배열[1]
설계자로스 이하카와 로버트 젠틀맨
개발자R코어팀
처음 등장했습니다.1993년 8월, 30년 전(1993~08년)
안정적 방출
4.3.3[2]/2024년 2월 29일, 13일 전(2024년 2월 29일)
타이핑 종목역학
플랫폼arm64 및 x86-64
면허증.GNU GPL v2[3]
파일 이름 확장자
  • .r[4]
  • .r데이터
  • .rhistory
  • .rds
  • .rda[5]
웹사이트www.r-project.org Edit this at Wikidata
에 의해 영향을 받았습니다.
영향받은
줄리아.[7]

R은 통계 컴퓨팅 및 데이터 시각화를 위한 프로그래밍 언어입니다. 데이터 마이닝, 생물정보학, 데이터 분석 분야에 채택되었습니다.[8]

핵심 R 언어는 재사용 가능한 코드, 문서 및 샘플 데이터를 포함하는 많은 수의 확장 패키지로 보강됩니다.

R 소프트웨어는 오픈 소스 및 자유 소프트웨어입니다. GNU 프로젝트에 의해 라이선스되며 GNU General Public License에 의해 이용 가능합니다.[3] 주로 C, Fortran, R 자체로 작성됩니다. 다양한 운영 체제를 위해 사전 컴파일된 실행 파일이 제공됩니다.

해석 언어로서 R은 기본 명령줄 인터페이스를 가지고 있습니다. 또한 통합 개발 환경인 RStudio 및 노트북 인터페이스인 Jupyter와 같은 여러 타사 그래픽 사용자 인터페이스를 사용할 수 있습니다.

역사

로스 이하카, R의 공동창립자

R은 Auckland 대학에서 입문 통계학을 가르치기 위한 프로그래밍 언어로서 Ross Ihaka와 Robert Gentleman 교수에 의해 시작되었습니다.[9] 이 언어는 S 프로그래밍 언어에서 영감을 받았으며, 대부분의 S 프로그램은 R에서 변경 없이 실행할 수 있습니다.[6] 이 언어는 Scheme의 어휘 범위에서 영감을 받아 지역 변수를 허용했습니다.[1]

언어의 이름인 R은 S 언어의 계승자이자 저자인 Ross와 Robert의 공유된 첫 글자에서 비롯되었습니다.[10] 1993년 8월, Ihaka와 Gentleman은 데이터 아카이브 웹사이트인 Ron StatLib의 바이너리를 게시했습니다. 동시에 그들은 s-뉴스 메일링 리스트에 게시물을 발표했습니다.[11] 1997년 12월 5일, 버전 0.60이 출시되면서 R은 GNU 프로젝트가 되었습니다.[12] 2000년 2월 29일 첫 번째 공식 1.0 버전이 출시되었습니다.[13]

패키지

refer to caption
R 시각화 패키지 ggplot2에서 생성된 바이올린 그림

R 패키지는 R을 확장하는 함수, 문서 및 데이터의 모음입니다.[14] 예를 들어 패키지는 RMarkdown, knitr 및 Sweave와 같은 보고서 기능을 추가합니다. 쉬운 패키지 설치 및 사용은 데이터 과학에서 이 언어를 채택하는 데 기여했습니다.[15]

CRAN(Comprehensive R Archive Network)은 1997년 커트 호닉(Kurt Hornik)과 프리츠 라이쉬(Fritz Leisch)가 R의 소스 코드, 실행 파일, 문서 및 사용자가 만든 패키지를 호스팅하기 위해 설립했습니다.[16] 그 이름과 범위는 종합 TeX 아카이브 네트워크와 종합 Perl 아카이브 네트워크를 모방합니다.[16] CRAN에는 원래 3개의 거울과 12개의 기여 패키지가 있었습니다.[17] 2022년 12월 현재 103개의[18] 거울과 18,976개의 기부 패키지가 있습니다.[19] 패키지는 저장소 R-Forge, Omegahat 및 GitHub에서도 사용할 수 있습니다.

CRAN 웹사이트의 Task Views에는 금융, 유전학, 고성능 컴퓨팅, 머신 러닝, 의료 이미징, 메타 분석, 사회 과학 및 공간 통계와 같은 분야의 패키지가 나열되어 있습니다.

바이오컨덕터 프로젝트는 게놈 데이터 분석, 상보적 DNA, 마이크로어레이, 고처리량 시퀀싱 방법을 위한 패키지를 제공합니다.

패키지는 선형, 일반화된 선형 및 비선형 모델링, 고전 통계 테스트, 공간 분석, 시계열 분석 및 클러스터링과 같은 다양한 통계 기법을 구현할 수 있는 기능을 추가합니다.

깔끔한 가로 패키지는 공통 인터페이스를 갖도록 구성되어 있습니다. 패키지의 각 기능은 패키지의 다른 모든 기능을 결합하도록 설계되었습니다.[14]

패키지 설치는 한 번만 이루어집니다. 깔끔한 가로 세로 설치 방법:[14]

> 설치.packages( "tidy버스" ) 

패키지의 기능, 데이터 및 설명서를 인스턴스화하려면 다음을 실행합니다. library() 기능. 깔끔한 세로 방향을 인스턴스화하려면:[a]

> 도서관( 정갈한 우주의 ) 

인터페이스

R은 명령줄 콘솔과 함께 설치됩니다. 다양한 통합 개발 환경(IDE)이 설치 가능합니다. R용 IDE는 R.app(OSX/macOS만 해당), 래틀 GUI, R 커맨더, RKWard, RStudio, Tinn-R 등입니다.

R을 지원하는 범용 IDE로는 통계를 통한 이클립스가 있습니다.ET 플러그인 및 Visual Studio용 R Tools를 통한 Visual Studio.

R을 지원하는 에디터로는 Emacs, Vim via the Nvim-R plugin, Kate, LyX via Sweave, WinEdt(웹사이트), Jupyter(웹사이트) 등이 있습니다.

R을 지원하는 스크립트 언어로는 Python(웹사이트), Perl(웹사이트), Ruby(소스코드), F#(웹사이트), Julia(소스코드) 등이 있습니다.

R을 지원하는 범용 프로그래밍 언어로는 Rserve 소켓 서버를 통한 Java, 등이 있습니다.NET C# (웹사이트).

R을 백그라운드로 사용하는 통계 프레임워크로는 자모비와 JASP가 있습니다.

지역 사회

R 코어 팀은 R 소스 코드를 유지하기 위해 1997년에 설립되었습니다. R Foundation for Statistical Computing은 2003년 4월 재정 지원을 목적으로 설립되었습니다. R 컨소시엄은 R 인프라를 개발하기 위한 Linux Foundation 프로젝트입니다.

R 저널은 R의 사용 및 개발에 대한 짧은 중간 길이의 기사를 특징으로 하는 오픈 액세스, 학술 저널입니다. 패키지, 프로그래밍 팁, CRAN 뉴스, 파운데이션 뉴스에 대한 기사가 포함되어 있습니다.

R 커뮤니티는 많은 컨퍼런스와 직접 미팅을 주최합니다. 이러한 그룹은 다음과 같습니다.

구현

주요 R 구현은 주로 C, Fortran 및 R 자체로 작성됩니다. 다른 구현은 다음과 같습니다.

마이크로소프트 R 오픈(MRO)은 R 구현이었습니다. 2021년 6월 30일부터 마이크로소프트는 CRAN 배포를 선호하여 MRO를 단계적으로 폐지하기 시작했습니다.[22]

상업적 지원

R은 오픈 소스 프로젝트이지만 일부 회사는 상업적 지원을 제공합니다.

  • Revolution Analytics는 R혁명에 대한 상업적 지원을 제공합니다.
  • Oracle은 R을 다른 제품에 통합하는 Big Data Appliance에 대한 상업적 지원을 제공합니다.
  • IBM은 R의 In-Hadoop 실행을 위한 상업적 지원을 제공합니다.

예

기본 구문

다음 예제에서는 언어의 기본 구문과 명령줄 인터페이스의 사용을 설명합니다. (표준어 기능의 확장된 목록은 R 매뉴얼 "R개론"에서 확인할 수 있습니다.)[23]

R에서 일반적으로 선호되는 할당 연산자는 두 문자로 만든 화살표입니다. <-,비록 ~일지라도 = 경우에 따라 사용할 수 있습니다.[24]

> x <- 1:6 # 현재 환경에서 숫자 벡터 생성 > y <- x^2 # x에 있는 값을 기준으로 벡터를 만듭니다. > 활자로 인쇄하다(y) # 벡터의 내용물을 인쇄합니다. [1]  1  4  9 16 25 36  > z <- x + y # x와 y의 합인 새 벡터 만들기 > z # z의 내용을 현재 환경으로 되돌립니다. [1]  2  6 12 20 30 42  > z_ matrix <- 매트릭스(z, 지금은=3) # 벡터 z를 3x2 행렬 객체로 변환하는 새 행렬 만들기 > z_ matrix       [,1] [,2] [1,]    2   20 [2,]    6   30 [3,]   12   42  > 2*t(z_ matrix)-2 # 행렬을 전치하고 모든 요소에 2를 곱한 후 행렬의 각 요소에서 2를 뺀 후 결과를 터미널에 반환합니다.      [,1] [,2] [,3] [1,]    2   10   22 [2,]   38   58   82  > new_df <- data.frame(t(z_ matrix), 행.이름=c('가','나')) # 행 이름이 'A' 및 'B'인 전치 z_매트릭스의 데이터를 포함하는 새 data.frame 개체를 만듭니다. > 이름(new_df) <- c('X','Y','Z') # new_df의 열 이름을 X, Y 및 Z로 설정합니다. > 활자로 인쇄하다(new_df)  # 현재 결과를 인쇄합니다.    XYZ A 2 6 12 B 203042  > new_df$Z # Z 열 출력 [1] 12 42  > new_df$Z==new_df['Z'] && new_df[3]==new_df$Z # data.frame 열 Z는 $Z, ['Z' 또는 [3] 구문을 사용하여 액세스할 수 있으며 값은 동일합니다.  [1] 참  > 특성(new_df) # new_df 개체에 대한 특성 정보 인쇄 $이름 [1] "X" "Y" "Z"  $행.이름 [1] "A" "B"  $급 [1] "data.frame"  > 특성(new_df)$행.이름 <- c('하나','둘') # 접근한 다음 row.name 속성을 변경합니다. rowname()을 사용하여 수행할 수도 있습니다. > new_df      XYZ 원 26 12 203042년 2월 

함수의 구조

R의 장점 중 하나는 새로운 기능을 쉽게 만들 수 있다는 점입니다.[25] 함수 본체의 개체는 함수의 로컬 상태로 유지되며 모든 데이터 유형이 반환될 수 있습니다.

함수를 만듭니다.

# 입력 파라미터는 x와 y입니다. # 함수는 x와 y의 선형 조합을 반환합니다. f <- 기능.(x, y) {   z <- 3 * x + 4 * y    # 이 반환 () 문은 선택 사항입니다.   돌아가다(z) } 

사용량 출력:

> f(1, 2) [1] 11  > f(c(1,2,3), c(5,3,4)) [1] 23 18 25  > f(1:3, 4) [1] 19 22 25 

모델링 및 플롯

"모형"(q.v. "plot.lm()" 함수)을 표시할 때의 진단 그림입니다. 레이블(왼쪽 아래 그림)에서 허용되는 수학적 표기법에 주목합니다.

R 언어에는 데이터 모델링 및 그래픽 지원이 내장되어 있습니다. 다음 예제에서는 R이 잔차가 있는 선형 모형을 생성하고 그림을 그리는 방법을 보여 줍니다.

# x 및 y 값 생성 x <- 1:6 y <- x^2  # 선형 회귀 모형 y = A + B * x 모형의 <- lm(y ~ x)  # 모델의 상세 요약 표시 요약(모형의)  # 도형에 대한 2 x 2 레이아웃 만들기 파(흐느끼다 = c(2, 2))  # 모델의 진단 그림 출력 줄거리.(모형의) 

출력:

잔차:       1       2       3       4       5       6       7       8      9      10  3.3333 -0.6667 -2.6667 -2.6667 -0.6667  3.3333  계수:             견적 Std. 오류 t 값 Pr(> t )    (Intercept)  -9.3333     2.8441  -3.282 0.030453 *  x 7.0000 0.7303 9.585 0.000662 ** --- 시그니프. 코드: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' 1  잔류 표준 오차: 4자유도에서 3.055 다중 R-제곱: 0.9583, 조정 R-제곱: 0.9478 F-통계량: 1 및 4 DF에서 91.88, p-값: 0.000662 

만델브로 집합

R로 작성된 "Mandelbrot.gif" 그래픽

이 Mandelbrot 집합 예제에서는 복소수의 사용을 강조합니다. 방정식의 처음 20번의 반복을 모델링합니다. z = z2 + c,어디에 c 는 서로 다른 복소 상수를 나타냅니다.

를 제공하는 패키지를 설치합니다. write.gif() 사전 기능:

설치.packages("caTools") 

R 소스 코드:

도서관(caTools)  제트 colors <-     컬러 램프 팔레트(         c("초록색", "핑크", "#007FF", "cyan", "#7FFF7F",           "흰색", "#FF7F00", "빨강", "#7F0000"))  dx <- 1500 # 폭을 정의하다 다이의 <- 1400 # 높이를 정하다  C  <-     복잡한(         진짜 =             대리인(                 seq(-2.2, 1.0, 길이의 = dx), 각각 = 다이의),                 상상력이 있는 = 대리인(seq(-1.2, 1.2, 길이의 = 다이의),                 dx))  # 복소수 행렬로 모양 바꾸기 C <- 매트릭스(C, 다이의, dx)  # 출력 3D 배열 초기화 X <- 배열(0, c(다이의, dx, 20))  Z <- 0  # 루프 20회 반복 위해서 (k 안에 1:20) {    # 중심차방정식   Z <- Z^2 + C    # 결과를 포착합니다.   X[, , k] <- exp(-복근(Z)) }  write.gif(     X,     만델브로.gif,     콜 = 제트 colors,     지체의 = 100) 

참고 항목

추가읽기

  • Wickham, Hadley; Çetinkaya-Rundel, Mine; Grolemund, Garrett (2023). R for data science: import, tidy, transform, visualize, and model data (2nd ed.). Beijing Boston Farnham Sebastopol Tokyo: O'Reilly. ISBN 978-1-4920-9740-2.
  • Gagolewski, Marek (2024). Deep R Programming. doi:10.5281/ZENODO.7490464. ISBN 978-0-6455719-2-9.

외부 링크

포털

메모들

  1. ^ 이것은 깔끔한 우주가 의존하는 모든 패키지 목록을 표준 오류로 표시합니다. 또한 충돌을 나타내는 두 개의 오류를 표시할 수 있습니다. 오류는 무시될 수 있습니다.

참고문헌

  1. ^ a b c Morandat, Frances; Hill, Brandon; Osvald, Leo; Vitek, Jan (11 June 2012). "Evaluating the design of the R language: objects and functions for data analysis". European Conference on Object-Oriented Programming. 2012: 104–131. doi:10.1007/978-3-642-31057-7_6. Retrieved 17 May 2016 – via SpringerLink.
  2. ^ Peter Dalgaard (29 February 2024). "R 4.3.3 is released". Retrieved 1 March 2024.
  3. ^ a b "R - Free Software Directory". directory.fsf.org. Retrieved 26 January 2024.
  4. ^ "R scripts". mercury.webster.edu. Retrieved 17 July 2021.
  5. ^ "R Data Format Family (.rdata, .rda)". Loc.gov. 9 June 2017. Retrieved 17 July 2021.
  6. ^ a b Hornik, Kurt; The R Core Team (12 April 2022). "R FAQ". The Comprehensive R Archive Network. 3.3 What are the differences between R and S?. Archived from the original on 28 December 2022. Retrieved 27 December 2022.
  7. ^ "Introduction". The Julia Manual. Archived from the original on 20 June 2018. Retrieved 5 August 2018.
  8. ^ Giorgi, Federico M.; Ceraolo, Carmine; Mercatelli, Daniele (27 April 2022). "The R Language: An Engine for Bioinformatics and Data Science". Life. 12 (5): 648. Bibcode:2022Life...12..648G. doi:10.3390/life12050648. PMC 9148156. PMID 35629316.
  9. ^ Ihaka, Ross. "The R Project: A Brief History and Thoughts About the Future" (PDF). p. 12. Archived (PDF) from the original on 28 December 2022. Retrieved 27 December 2022. We set a goal of developing enough of a language to teach introductory statistics courses at Auckland.
  10. ^ Hornik, Kurt; The R Core Team (12 April 2022). "R FAQ". The Comprehensive R Archive Network. 2.13 What is the R Foundation?. Archived from the original on 28 December 2022. Retrieved 28 December 2022.
  11. ^ Ihaka, Ross. "R: Past and Future History" (PDF). p. 4. Archived (PDF) from the original on 28 December 2022. Retrieved 28 December 2022.
  12. ^ Ihaka, Ross (5 December 1997). "New R Version for Unix". stat.ethz.ch. Archived from the original on 12 February 2023. Retrieved 12 February 2023.
  13. ^ Ihaka, Ross. "The R Project: A Brief History and Thoughts About the Future" (PDF). p. 18. Archived (PDF) from the original on 28 December 2022. Retrieved 27 December 2022.
  14. ^ a b c Wickham, Hadley; Cetinkaya-Rundel, Mine; Grolemund, Garrett (2023). R for Data Science, Second Edition. O'Reilly. p. xvii. ISBN 978-1-492-09740-2.
  15. ^ Chambers, John M. (2020). "S, R, and Data Science". The R Journal. 12 (1): 462–476. doi:10.32614/RJ-2020-028. ISSN 2073-4859. The R language and related software play a major role in computing for data science. ... R packages provide tools for a wide range of purposes and users.
  16. ^ a b Hornik, Kurt (2012). "The Comprehensive R Archive Network". WIREs Computational Statistics. 4 (4): 394–398. doi:10.1002/wics.1212. ISSN 1939-5108. S2CID 62231320.
  17. ^ Kurt Hornik (23 April 1997). "Announce: CRAN". r-help. Wikidata Q101068595..
  18. ^ "The Status of CRAN Mirrors". cran.r-project.org. Retrieved 30 December 2022.
  19. ^ "CRAN - Contributed Packages". cran.r-project.org. Retrieved 29 December 2022.
  20. ^ Talbot, Justin; DeVito, Zachary; Hanrahan, Pat (1 January 2012). "Riposte: A trace-driven compiler and parallel VM for vector code in R". Proceedings of the 21st international conference on Parallel architectures and compilation techniques. ACM. pp. 43–52. doi:10.1145/2370816.2370825. ISBN 9781450311823. S2CID 1989369.
  21. ^ 잭슨, 조브 (2013년 5월 16일). TIBCO는 기업에 무료 R을 제공합니다. PC월드. 2015년 7월 20일 회수.
  22. ^ "Looking to the future for R in Azure SQL and SQL Server". 30 June 2021. Retrieved 7 November 2021.
  23. ^ "An Introduction to R. Notes on R: A Programming Environment for Data Analysis and Graphics" (PDF). Retrieved 3 January 2021.
  24. ^ R Development Core Team. "Assignments with the = Operator". Retrieved 11 September 2018.
  25. ^ Kabacoff, Robert (2012). "Quick-R: User-Defined Functions". statmethods.net. Retrieved 28 September 2018.