R(프로그래밍 언어)

R (programming language)
R
R단자
패러다임다중 패러다임: 절차적, 객체 지향적, 기능적, 반사적, 명령적, 배열[1]
설계자로스 이하카와 로버트 젠틀맨
개발자R코어팀
처음 등장했습니다.1993년 8월, 30년(1993~08년)
안정적 방출
4.3.3[2]/2024년 2월 29일, 13일(2024년 2월 29일)
타이핑 종목역학
플랫폼arm64x86-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의 공동창립자

RAuckland 대학에서 입문 통계학을 가르치기 위한 프로그래밍 언어로서 Ross IhakaRobert 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이 출시되면서 RGNU 프로젝트가 되었습니다.[12] 2000년 2월 29일 첫 번째 공식 1.0 버전이 출시되었습니다.[13]

패키지

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

R 패키지는 R을 확장하는 함수, 문서 및 데이터의 모음입니다.[14] 예를 들어 패키지는 RMarkdown, knitrSweave와 같은 보고서 기능을 추가합니다. 쉬운 패키지 설치 및 사용은 데이터 과학에서 이 언어를 채택하는 데 기여했습니다.[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, OmegahatGitHub에서도 사용할 수 있습니다.

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.