R(프로그래밍 언어)
R (programming language)패러다임 | 다중 패러다임: 절차적, 객체 지향적, 기능적, 반사적, 명령적, 배열[1] |
---|---|
설계자 | 로스 이하카와 로버트 젠틀맨 |
개발자 | R코어팀 |
처음 등장했습니다. | 1993년 8월, | 전 ~08년
안정적 방출 | 4.3.3[2]/2024년 2월 29일, 전 |
타이핑 종목 | 역학 |
플랫폼 | arm64 및 x86-64 |
면허증. | GNU GPL v2[3] |
파일 이름 확장자 | |
웹사이트 | www |
에 의해 영향을 받았습니다. | |
영향받은 | |
줄리아.[7] | |
|
R은 통계 컴퓨팅 및 데이터 시각화를 위한 프로그래밍 언어입니다. 데이터 마이닝, 생물정보학, 데이터 분석 분야에 채택되었습니다.[8]
핵심 R 언어는 재사용 가능한 코드, 문서 및 샘플 데이터를 포함하는 많은 수의 확장 패키지로 보강됩니다.
R 소프트웨어는 오픈 소스 및 자유 소프트웨어입니다. GNU 프로젝트에 의해 라이선스되며 GNU General Public License에 의해 이용 가능합니다.[3] 주로 C, Fortran, R 자체로 작성됩니다. 다양한 운영 체제를 위해 사전 컴파일된 실행 파일이 제공됩니다.
해석 언어로서 R은 기본 명령줄 인터페이스를 가지고 있습니다. 또한 통합 개발 환경인 RStudio 및 노트북 인터페이스인 Jupyter와 같은 여러 타사 그래픽 사용자 인터페이스를 사용할 수 있습니다.
역사
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]
패키지
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 커뮤니티는 많은 컨퍼런스와 직접 미팅을 주최합니다. 이러한 그룹은 다음과 같습니다.
- UseR!: 연간 국제 R 사용자 컨퍼런스(웹사이트)
- DSC(Statistical Computing) 방향(Website)
- R-Ladies: R 지역사회의 성 다양성 증진을 위한 기관 (홈페이지)
- SatRdays : 토요일 R중심 컨퍼런스 개최 (웹사이트)
- R컨퍼런스(홈페이지)
- posit::conf (이전 이름은 rstudio:conf) (website)
구현
주요 R 구현은 주로 C, Fortran 및 R 자체로 작성됩니다. 다른 구현은 다음과 같습니다.
- 꽤 빠른 R(pqR), 래드포드 M. 닐, 메모리 관리 개선을 시도합니다.
- Renjin은 Java Virtual Machine용 R을 구현한 것입니다.
- CXXR과 Riposte는[20] C++로 작성된 R을 구현한 것입니다.
- Oracle의 FastR은 GraalVM을 기반으로 R을 구현한 것입니다.
- S-PLUS를 만든 TIBCO Software는 Spotfire와 통합하기 위한 R 구현인 TERR을 작성했습니다.[21]
마이크로소프트 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
모델링 및 플롯
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
만델브로 집합
이 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.
외부 링크
- R 기술 문서
- 자유 소프트웨어 재단
- R FAQ
- R의 빅북, R관련 프로그래밍 도서 큐레이팅 리스트
- R - R Project 관련 도서, S 또는 R과 관련이 있고 R 사용자 커뮤니티에 유용할 수 있는 부분 주석이 달린 도서 목록
포털
메모들
참고문헌
- ^ 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.
- ^ Peter Dalgaard (29 February 2024). "R 4.3.3 is released". Retrieved 1 March 2024.
- ^ a b "R - Free Software Directory". directory.fsf.org. Retrieved 26 January 2024.
- ^ "R scripts". mercury.webster.edu. Retrieved 17 July 2021.
- ^ "R Data Format Family (.rdata, .rda)". Loc.gov. 9 June 2017. Retrieved 17 July 2021.
- ^ 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.
- ^ "Introduction". The Julia Manual. Archived from the original on 20 June 2018. Retrieved 5 August 2018.
- ^ 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.
- ^ 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.
- ^ 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.
- ^ Ihaka, Ross. "R: Past and Future History" (PDF). p. 4. Archived (PDF) from the original on 28 December 2022. Retrieved 28 December 2022.
- ^ 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.
- ^ 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.
- ^ 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.
- ^ 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.
- ^ 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.
- ^ Kurt Hornik (23 April 1997). "Announce: CRAN". r-help. Wikidata Q101068595..
- ^ "The Status of CRAN Mirrors". cran.r-project.org. Retrieved 30 December 2022.
- ^ "CRAN - Contributed Packages". cran.r-project.org. Retrieved 29 December 2022.
- ^ 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.
- ^ 잭슨, 조브 (2013년 5월 16일). TIBCO는 기업에 무료 R을 제공합니다. PC월드. 2015년 7월 20일 회수.
- ^ "Looking to the future for R in Azure SQL and SQL Server". 30 June 2021. Retrieved 7 November 2021.
- ^ "An Introduction to R. Notes on R: A Programming Environment for Data Analysis and Graphics" (PDF). Retrieved 3 January 2021.
- ^ R Development Core Team. "Assignments with the = Operator". Retrieved 11 September 2018.
- ^ Kabacoff, Robert (2012). "Quick-R: User-Defined Functions". statmethods.net. Retrieved 28 September 2018.