맨위로가기

R (프로그래밍 언어)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

R (프로그래밍 언어)은 오클랜드 대학교의 로스 이하카와 로버트 젠틀먼이 통계학 교육을 위해 개발한 프로그래밍 언어이다. S 언어의 영향을 받아 개발되었으며, GNU 프로젝트에 합류하여 자유 소프트웨어가 되었다. 통계 분석에 특화된 환경을 제공하며, 다양한 통계 및 그래픽 기술을 지원한다. R은 객체 지향 프로그래밍을 지원하며, CRAN(Comprehensive R Archive Network)을 통해 패키지를 설치하여 기능을 확장할 수 있다. R은 다양한 분야에서 활용되며, 특히 통계, 데이터 과학, 기계 학습 등에서 널리 사용된다.

더 읽어볼만한 페이지

  • 과학 소프트웨어 - NAMD
  • 과학 소프트웨어 - KStars
    KStars는 지구상의 임의의 장소에서 밤하늘을 그래픽으로 표시하는 소프트웨어이며, 다양한 천문학적 객체와 기능을 제공한다.
  • 문학적 프로그래밍 - 하스켈
    하스켈은 해스켈 커리의 이름을 딴 순수 함수형 프로그래밍 언어로, 여러 함수형 언어 통합 노력의 결과로 탄생하여 느긋한 계산법, 패턴 매칭, 타입 클래스, 모나드 등의 특징을 가지며 GHC가 표준 구현체로 사용된다.
  • 문학적 프로그래밍 - CWEB
    CWEB은 내용 분석이 불가능한 위키백과 문서이며, 정보의 투명성과 접근성 개선이 필요한 상황이다.
  • 1993년 개발된 프로그래밍 언어 - 루아 (프로그래밍 언어)
    루아는 C 언어와의 통합이 용이하고 작고 가벼운 확장 가능한 스크립트 언어로, 테이블 기반의 자료 구조를 통해 다양한 프로그래밍 패러다임을 지원하며 여러 분야에서 활용된다.
  • 1993년 개발된 프로그래밍 언어 - 비주얼 베이직 포 애플리케이션
    비주얼 베이직 포 애플리케이션(VBA)은 마이크로소프트 오피스 제품군 등에서 매크로 생성 및 자동화 작업을 위해 사용되는 프로그래밍 언어로서, 여러 응용 프로그램에서 자동화 솔루션 구축, 오피스 프로그램 기능 확장, 사용자 정의 함수 제작, 다른 응용 프로그램과의 통합 등에 활용되며 보안 문제도 포함한다.
R (프로그래밍 언어) - [IT 관련 정보]에 관한 문서
기본 정보
R 로고
R 로고
R 터미널
R 터미널
출시일1993년 8월
설계자로스 이하카, 로버트 젠틀맨
개발자R 코어 팀
타이핑동적 타이핑
플랫폼arm64, x86-64
라이선스GPL-2.0-or-later
웹사이트공식 웹사이트
위키책R 프로그래밍
패러다임다중 패러다임: 절차적, 객체 지향, 함수형, 반사적, 명령형, 배열
최신 안정화 버전 출시일}}
최신 미리보기 버전 출시일}}
영향 받은 언어Lisp
S
Scheme
파일 확장자.r
.rdata
.rhistory
.rds
.rda
구현체
구현체GNU R

2. 역사

R의 공동 개발자 로스 이하카


R의 공동 개발자 로버트 젠틀먼


''R''은 오클랜드 대학교의 로스 이하카와 로버트 젠틀먼 교수가 통계학 입문 교육을 위해 개발한 프로그래밍 언어이다.[9] S 프로그래밍 언어와 Scheme의 어휘적 범위에서 영감을 받아, 대부분의 S 프로그램이 ''R''에서 수정 없이 실행될 수 있고, 지역 변수를 허용한다.[4][3]

''R''이라는 이름은 S 언어의 후속자임을 나타내는 동시에 개발자 로스와 로버트의 이름 첫 글자를 공유하는 데서 유래했다.[10] 1993년 8월, 이하카와 젠틀먼은 StatLib — 데이터 보관 웹사이트에 ''R''의 이진 파일을 게시하고, ''s-news'' 메일링 리스트에 이 사실을 발표했다.[11][12] 1997년 12월 5일, 버전 0.60이 출시되면서 ''R''은 GNU 프로젝트에 합류하였다.[13] 2000년 2월 29일, 첫 번째 공식 1.0 버전이 출시되었다.[14]

2. 1. S 언어의 영향

R의 문법과 통계처리는 AT&T 벨 연구소가 개발한 S를 참고했고,[9] 데이터 처리는 스킴의 영향을 받았다.[3] R에서는 대부분의 S 프로그램이 수정 없이 실행될 수 있으며,[4] 지역 변수를 허용한다.[3]

2. 2. 로스 이하카와 로버트 젠틀먼

오클랜드 대학교의 로스 이하카와 로버트 젠틀먼 교수는 통계학 입문 교육을 위해 ''R'' 프로그래밍 언어를 개발했다.[9] 이 언어는 S 프로그래밍 언어와 Scheme의 어휘적 범위에서 영감을 받아, 대부분의 S 프로그램이 ''R''에서 수정 없이 실행될 수 있고, 지역 변수를 허용한다.[4][3]

''R''이라는 이름은 S 언어의 후속자임을 나타내는 동시에 개발자 로스와 로버트의 이름 첫 글자를 공유하는 데서 유래했다.[10] 1993년 8월, 이하카와 젠틀먼은 StatLib — 데이터 보관 웹사이트에 ''R''의 이진 파일을 게시하고, ''s-news'' 메일링 리스트에 이 사실을 발표했다.[11][12]

2. 3. GNU 프로젝트 합류



''R''은 오클랜드 대학교의 로스 이하카와 로버트 젠틀먼 교수가 통계학 입문 교육을 위해 개발한 프로그래밍 언어이다.[9] 1993년 8월, 이하카와 젠틀먼은 데이터 보관 웹사이트인 StatLib에 ''R''의 이진 파일을 게시하고,[11] ''s-news'' 메일링 리스트에 이 사실을 발표했다.[12] 1997년 12월 5일, ''R''은 버전 0.60이 출시되면서 GNU 프로젝트에 합류하였다.[13]

3. 특징

R은 S의 문법과 통계 처리, 스킴의 데이터 처리 방식을 기반으로 만들어진 프로그래밍 언어이다. 다양한 통계 및 수치 해석 기법을 지원하며, 사용자가 만든 패키지를 통해 기능을 확장할 수 있다. 2022년 1월 기준 18,700개 이상의 R 패키지가 CRAN을 통해 제공되고 있다.

R은 출판물 수준의 그래프를 생성하는 강력한 그래픽 기능을 제공하며, 수학 기호도 포함할 수 있다. 행렬 계산 도구로도 사용될 수 있어 GNU Octave나 MATLAB에 견줄 만하다.

MS 윈도우, 맥 OS, 리눅스 등 다양한 UNIX 플랫폼에서 사용 가능하다. R 및 라이브러리는 선형 및 비선형 모델링, 고전 통계 테스트, 시계열 분석, 분류, 클러스터링 등 다양한 통계 및 그래픽 기술을 구현한다. R 커뮤니티는 패키지 개발에 활발하게 참여하며, R의 많은 표준 함수는 R 자체로 작성되어 사용자가 알고리즘을 쉽게 이해할 수 있다.

계산 작업 시 C, C++, Fortran 코드를 런타임에 연결하고 호출할 수 있다.[191] R 객체는 C, C++,[191] Java,[192] .NET,[193] Python 코드로 직접 작성할 수 있다. R는 S의 전통을 이어받아 대부분의 통계 컴퓨팅 언어보다 강력한 객체 지향 프로그래밍 기능을 제공한다.

R은 LaTeX와 유사한 자체 문서 형식인 Rd(R documentation,Rd format)를[196] 사용하여 온라인과 인쇄물 형태의 문서를 제공한다.

R은 오픈 소스 프로젝트이지만, 레볼루션 애널리틱스, 오라클, IBM 등에서 상업적 지원을 제공하기도 한다.

3. 1. 벡터 처리 언어

R 언어는 "벡터 처리"라는 실행 방식을 통해 유연하고 간편하게 데이터를 처리한다. 여기서 "벡터"는 수학 용어와는 달리 "구조를 가진 데이터 집합"을 의미하며, 리스트에 가깝다.[172]

R에서는 실수, 복소수뿐만 아니라 배열, 리스트, 테이블(데이터 프레임), 집합, 시계열 등 복잡한 구조의 데이터도 변수에 바로 넣을 수 있다. 벡터의 요소가 다시 테이블이나 시계열의 배열과 같은 "중첩 구조"여도 상관없다. 이러한 특징 덕분에 복잡한 데이터 구조를 쉽게 만들고 관리할 수 있다.

R에 내장된 연산자와 함수는 벡터를 처리할 수 있도록 설계되어 있다. 사용자 정의 함수도 벡터에 대응시킬 수 있다. 이들은 벡터의 모든 요소에 순서대로 작용하여, 프로그램 전체의 제어 구조를 단순화하고 명확하게 만든다. 다른 프로그래밍 언어에서 여러 요소를 처리할 때 필요한 "알고리즘"(예: 카운터를 사용한 루프, 조건 분기) 작성 부담을 줄여준다.[173]

예를 들어, 몬테카를로 방법으로 원주율을 근사하는 계산은 다음과 같이 간결하게 표현할 수 있다.[173]

```r

s <- 100000

x <- runif(s)

y <- runif(s)

sum(x^2 + y^2 <= 1) * 4 / s

```

위 코드에서 `<-`는 대입, `runif(a)`는 난수를 `a`개 생성하여 벡터로 반환하는 함수, `a^2`는 `a`의 제곱, `sum( a <= b)`는 인수의 벡터 요소 수를 반환하는 함수이다. 이 코드는 0과 1 사이의 난수 `x`, `y` 조합 10만 개를 만들고, 그중 반지름 1인 원 안에 들어가는 표본 개수를 세는 계산을 반복문 없이 표현한다.

논리형 벡터(TRUE/FALSE)는 수치 계산에서 TRUE=1, FALSE=0으로 해석된다. 이를 이용하여 `sum` 함수로 합계를 계산할 수 있다.

벡터는 "논리 첨자"(원래 벡터와 요소 수가 같은 논리형 벡터)를 사용하여 요소를 선택하고, 선택된 요소만 변경할 수 있다. "수치 첨자"도 사용 가능하지만, "논리 첨자"는 여러 개를 조합하여 논리 계산을 할 수 있어 더 복잡한 처리가 가능하다.

다음은 논리 첨자를 이용한 피즈 버즈 문제 해결 예시이다.

```r

# 1부터 100까지의 정수 벡터 생성

1:100 -> n -> Ans

# 3의 배수 위치(FizzSet)에 "Fizz" 저장

Ans[n %% 3 == 0 -> FizzSet] <- "Fizz"

# 5의 배수 위치(BuzzSet)에 "Buzz" 저장

Ans[n %% 5 == 0 -> BuzzSet] <- "Buzz"

# 3과 5의 공배수 위치에 "FizzBuzz" 저장

Ans[FizzSet & BuzzSet] <- "FizzBuzz"

# 결과 출력

cat(Ans)

```

이 코드는 루프, 카운터, 조건 분기 없이 문제의 논리를 구현한다. "FizzSet"과 "BuzzSet"은 논리 첨자 변수이며, 추출, 대체, 논리곱 연산에 사용된다.

R은 벡터 및 행렬 연산, 이터레이터로서의 `for`, 각종 제어 명령을 제공하여 복잡한 계산도 가능하다.

3. 2. 통계 분석에 최적화된 환경

R은 통계 분석에 최적화된 환경을 제공하며, 최소한의 노력으로 데이터를 파악하고 분석할 수 있도록 설계된 명령 체계를 갖추고 있다. 주요 특징은 다음과 같다.

  • 데이터 형식: 벡터, 배열, 행렬, 데이터 프레임(테이블 형태), 리스트, 시계열 등 다양한 동적 타이핑데이터 형식을 지원한다. ("데이터 형식" 참조)
  • 고차 함수: 데이터를 다루는 함수인 고차 함수를 벡터 처리로 기술할 수 있다.
  • 파이프 연산자: 이름 지정 인수 플레이스홀더 "_"를 활용하는 네이티브 파이프 연산자 "|>"를 지원한다.
  • 모델식: 복잡한 통계 모델 기술과 곡선 적합 등의 모델 적합 지시를 간결하고 통일적으로 표현하는 '모델식'을 도입했다.
  • 특수값: 결측값(NA), 무효값(NULL), 무한대(Inf, -Inf), 비수치(NaN) 등의 상수와 검사 함수를 제공한다.
  • 계산 기능: 집합 계산, 복소수 계산, 시간 날짜 계산, 인자 계산 기능을 제공한다.
  • 확률 분포 함수: d (확률 밀도 함수), p (누적 분포 함수), q (분위 함수), r (난수 생성)의 4가지 기능과 분포명을 조합하는 명명 규칙을 따르는 다차원 확률 분포 함수를 제공한다.[174]
  • 벡터 시퀀스 생성: rep, seq, sequence, seq.Date, seq.POSIXt, combn, expand.grid, replicate 등 벡터 시퀀스를 규칙적으로 생성하는 함수들을 제공한다.
  • 집약 함수: mean, sum, cumsum, cumprod, rowMeans, table 등 데이터를 집약하는 함수들을 제공한다.
  • 범용 함수 및 고수준 함수: apply, lapply, by 등의 범용 함수와 Reduce, Map, Filter 등의 고수준 함수를 제공한다.
  • 표본 추출: sample 함수를 이용하여 수치, 복소수, 문자열 등에서 가중 표본 추출(샘플링)을 할 수 있다.
  • 객체 지향 프로그래밍: 객체 지향 프로그래밍(함수, 대입식도 객체)을 지원한다. ("객체 지향" 참조)
  • 문법: 단순한 구문, 데이터 형식 선언 불필요, 이름 공간을 지원한다. ("사양" 참조)
  • 문자열 조작: 문자열과 식의 상호 변환, 패턴 매칭 검색, 편집 등 다양한 문자열 조작 기능을 제공한다.
  • 배치 처리: 대화형 처리뿐만 아니라 배치 처리도 가능하다.
  • 검증용 데이터: 분석 수법 비교 검증에 필수적인 "정석 검증용 데이터 모음"을 제공한다.
  • 내장 함수: 신경망, 결정 트리, 클러스터, 주성분, 인자 분석, 다변량 분석, 선형, 비선형, 자기 상관 모델 등 다양한 고수준 내장 함수를 제공한다.
  • 확장 기능: 이미지 처리, 음성 합성, GIS, 텍스트 마이닝 등 '''CRAN'''을 통해 매일 확장되는 기능을 제공한다.
  • 의사 난수 생성: 메르센 트위스터 (기본값 설정) 등 다양한 의사 난수 생성법을 선택할 수 있다.
  • 64비트 지원: 모든 플랫폼에서 64비트를 지원한다.
  • 데이터 입출력: 다른 통계 소프트웨어(엑셀 등)의 데이터를 읽을 수 있다.[175] ("데이터 입출력" 참조). 예를 들어, CSV포맷 파일은 "read.csv("파일명")" 명령어로, 탭으로 구분된 텍스트 형식(TSV)은 "read.table("mytsv.txt", header=T, sep="\t")"로 R의 표준 테이블 데이터 형식인 데이터 프레임으로 자동 변환하여 읽을 수 있다.
  • 데이터베이스 연결: ODBC 지원을 통해 다양한 데이터베이스에 접근할 수 있다.
  • 커넥션 기능: 웹 등 다양한 데이터 소스로부터의 입력 형태에 대응하는 "커넥션 기능"을 제공한다.
  • 크로스 플랫폼 및 오픈 소스: 멀티 플랫폼, 오픈 소스이며 무료이므로 누구나 동일한 작업 환경을 구축할 수 있다.
  • 교육 활용: "명령어 문법이 단순하다", "고수준의 통계 분석 및 시각화 기능, 영속적인 이용에 견딘다" 등의 이유로 교육 기관에서 통계학 교육이나 통계 처리가 필요한 강의에 활용하기 쉽다. 프로그래밍 시간을 절약하고 통계 분석 교육 및 학습에 집중할 수 있으며, 전문적인 도구이므로 학습 기술은 실무에 활용 가능하다. ("프로그램 입수", "지속 가능한 통계 환경", "최근 전개" 참조)


R은 표준 상태에서도 통계, 검정, 분석을 위한 강력한 함수를 갖추고 있으며, 필요에 따라 새로운 함수를 정의할 수 있다. (C나 FORTRAN 등으로 작성하고 외부에서 컴파일한 함수를 호출할 수 있다.) 또한 직접 프로그램을 작성하지 않아도 많은 패키지를 이용할 수 있으며, 편리한 입출력 기능과 그래프 작성 기능을 갖추고 있다.

3. 3. 빠른 내장 함수

R은 인터프리터 언어이지만, 행렬과 같은 복잡한 데이터 구조에 최적화된 빠른 내장 함수들을 제공한다.[191] 이러한 내장 함수들은 R 프로그램의 처리 속도를 높여준다.

더 빠른 계산이 필요한 경우, C, C++, FORTRAN과 같은 외부 프로그램과 동적 링크하여 기능을 확장할 수 있다. 이를 통해 R은 더욱 복잡하고 계산 집약적인 작업도 효율적으로 처리할 수 있다.

3. 4. 뛰어난 시각화 기능

R의 또 다른 강점은 그래픽 기능으로, 수학 기호를 포함할 수 있는 출판물 수준의 그래프를 제공하는 것이다.[194][195] 데이터의 그래프·도해 기능이 유연하며 인포그래픽 환경이라고도 부를 수 있을 정도로 고도화된 그래프 작성 소프트웨어 기능을 갖추고 있고, 사용자 고유의 도해 정의도 쉽게 프로그래밍할 수 있다.

그래프 이미지는 여러 이미지 형식·상업 인쇄 품질로 출력할 수 있다([#데이터의 플롯|데이터의 플롯] 참조). plot 함수를 사용하면 다양한 플롯을 그릴 수 있는데, 이 함수는 제네릭 함수이며 인수로 전달된 데이터의 종류에 따라 자동으로 다양한 그래프를 그린다. 그 외에 히스토그램을 그리는 함수, 이미지를 그리는 함수 등 고수준의 그리기 함수가 있다. 이들은 기본적으로도 기능하지만, 세부적인 매개변수를 지정할 수도 있다. 게다가 단순히 선을 긋거나 점을 찍는 저수준의 그리기 함수도 제공되므로 원하는 그래프를 생성할 수 있다. 플롯은 화면뿐만 아니라 PDF, SVG, PostScript, PNG와 같은 형식으로 직접 출력할 수 있다.

위 그림은 기본 상태에서의 플롯 예시를 보여준다. 위에서부터 차례대로 plot(개고양이$종, 개고양이$성별), plot(sin(seq(0, 2 *pi, 0.1))), image(x <- -50:50, x, x %*% t(x))의 실행 결과이다. seq 함수는 등차수열로 구성된 벡터를 생성한다. %*%는 행렬의 곱을 계산하는 연산자, t전치 행렬을 생성하는 함수이다. 첫 번째 예시는 앞서 다룬 동물 종별 성비를 표시하고, 다음 예시는 사인 함수(자동으로 벡터의 첨자가 가로축이 되고, 벡터 생성식이 세로축 레이블이 됨)를 표시하며, 마지막 예시에서는 인수를 평가하는 과정에서 벡터를 생성하여 x에 대입하고, 곱을 계산하여 각 요소의 값을 색의 농도로 표현한다.

3. 5. 데이터 호환성

R은 SPSS, SAS 등 시판되는 통계 분석 패키지의 고유 형식 이진 데이터를 직접 다룰 수 있다. 또한, 이미지를 이진 데이터로 읽어와 행렬로 처리하여 이미지 처리에 활용할 수도 있다.

3. 6. CRAN 네트워크 기능

R 사용자가 만든 다양한 패키지들은 CRAN(the Comprehensive R Archive Network)을 통해 공유되며, 이를 통해 R의 기능을 확장할 수 있다. 2022년 1월 기준으로 18,700개 이상의 R 패키지를 CRAN에서 내려받을 수 있다.[19] 2024년 10월 16일 기준으로 99개의 미러[21]와 21,513개의 기여 패키지를 보유하고 있다.[22]

CRAN은 1997년 Kurt Hornik과 Friedrich Leisch에 의해 설립되었으며, 포괄적인 TeX 아카이브 네트워크와 포괄적인 펄 아카이브 네트워크를 모방하여 이름 붙여졌다.[19] 초기에는 3개의 미러와 12개의 패키지로 시작했다.[20]

R 사용자들은 CRAN을 통해 패키지 목록 검색, 다운로드, 설치, 로드, 업데이트를 R 시스템 내에서 편리하게 수행할 수 있다. 패키지 간의 종속성도 자동으로 처리되므로 사용자가 별도로 신경 쓸 필요가 없다. 이러한 기능 덕분에 CRAN은 R 사용자들에게 R과 통합된 기능의 일부로 인식되며, 전 세계 R 사용자들이 개발한 패키지를 자유롭게 이용할 수 있게 해준다.

CRAN 웹 사이트의 [https://cran.r-project.org/web/views/ 작업 보기]에서는 금융, 유전학, 고성능 컴퓨팅, 머신 러닝, 의료 영상, 메타 분석, 사회 과학, 공간 통계 등 다양한 분야의 패키지 목록을 확인할 수 있다.

패키지는 CRAN 외에도 저장소 R-Forge, Omegahat, GitHub 등에서도 구할 수 있다.[23][24][25]

패키지 설치는 `install.packages("패키지이름")` 명령어를 통해 한 번만 수행하면 된다. 설치된 패키지의 함수, 데이터, 문서를 사용하려면 `library("패키지이름")` 또는 `library(패키지이름)` 명령어를 실행하여 패키지를 로드해야 한다.[27]

R 시스템에 CRAN 사이트를 등록하면 패키지 관리를 자동화할 수 있지만, 이 설정 없이도 R을 사용하거나 오프라인 환경에서 R을 사용하는 데는 문제가 없다. 필요한 경우 언제든지 CRAN에 접속하여 패키지를 다운로드할 수 있다.[177]

3. 7. 지속 가능한 통계 환경

R은 오픈 소스 프로젝트이기 때문에, 교육, 연구, 실무 현장에서 영구적으로 이용 가능한 환경을 제공한다. R 언어 등장 이전에는, 학술 논문 등 사회적 신뢰성을 요구하는 통계 데이터 처리 환경은 고가의 프로프라이에터리 소프트웨어만 전제되었다. 하지만, 이 경우 지속적인 예산을 확보하지 못하면 환경 지원 및 업데이트가 중단될 수 있었다.

통계학자에게는, 지금까지 습득하고 연마한 기법과 축적한 데이터 및 그 운용 방법은 비록 환경이 변화하더라도 계승할 수 있어야 한다. 이러한 의미에서, 다른 많은 독점 소프트웨어와 같이 "살리는 것도 죽이는 것도 판권 보유자의 사정에 달려있는" 통계 처리 도구와 비교하여, R 언어와 같은 오픈 소스이며, CRAN 패키지 등에 의해 날마다 기능 확장할 수 있는, 즉, "자유 소프트웨어의 정신에 따라 영속적이고 세계 규모의 집단 지성에 의해 지원받으며, 무상이면서 높은 신뢰성을 가지는" 통계 환경은 통계학자의 장기적인 생산성에 크게 기여하는 "지속 가능한 통계 환경"이라고 할 수 있다.[172]

4. 언어 사양

R은 다중 패러다임 프로그래밍 언어이다. 함수형 프로그래밍 언어인 Scheme의 영향을 받아 리스트 기반 내부 처리, 지연 평가, 정적 스코프 등의 특징을 가지며, 객체 지향 프로그래밍 기능도 갖추고 있다. 절차적 표기법은 C 언어의 영향을 받았다.

R에서 주로 사용되는 할당 연산자는 화살표(<-)이며, 등호(=)도 일부 경우에 사용 가능하다.[34] 다음은 기본적인 언어 구문과 명령줄 인터페이스 사용 예시이다.

```R

> x <- 1:6 # 숫자 벡터 생성

> y <- x^2 # x를 기반으로 벡터 생성

> print(y) # 벡터 내용 출력

[1] 1 4 9 16 25 36

> z <- x + y # x와 y의 합으로 새 벡터 생성

> z # z의 내용 반환

[1] 2 6 12 20 30 42

> z_matrix <- matrix(z, nrow = 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

```

R의 장점 중 하나는 새로운 함수를 쉽게 만들 수 있다는 것이다.[35] 함수 본문의 객체는 함수에 지역적으로 유지되며, 모든 자료형을 반환할 수 있다. R에서 거의 모든 함수와 사용자 정의 함수는 클로저이다.[36]

```r

# 입력: x, y

# 반환: x와 y의 선형 조합

f <- function(x, y) {

z <- 3 * x + 4 * y

return(z) # return(z)는 z로 대체 가능

}

```

```R

> 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

```

`%name%` 구문을 사용하여 "name"을 함수 변수 이름으로 하는 중위 연산자를 정의할 수 있다.

```R

> `%sumx2y2%` <- function(e1, e2) {e1 ^ 2 + e2 ^ 2}

> 1:3 %sumx2y2% -(1:3)

[1] 2 8 18

```

4.1.0 버전부터는 짧은 함수 표기법을 사용할 수 있어 고차 함수에 익명 함수를 전달할 때 유용하다.[37]

```R

> sapply(1:5, \(i) i^2) # \(i)는 function(i)와 동일

[1] 1 4 9 16 25

```

R로 생성된 "Mandelbrot.gif" 그래픽 (색상은 실제 출력과 다를 수 있음)


만델브로 집합 예제는 복소수 사용을 보여준다. 이 예제는 `z = z^2 + c` 방정식의 처음 20회 반복을 모델링하며, 여기서 `c`는 다른 복소수 상수를 나타낸다.

```r

library(caTools) # write.gif() 함수를 위한 caTools 패키지 로드

jet.colors <-

colorRampPalette(

c("green", "pink", "#007FFF", "cyan", "#7FFF7F",

"white", "#FF7F00", "red", "#7F0000"))

dx <- 1500 # 너비

dy <- 1400 # 높이

C <-

complex(

real = rep(seq(-2.2, 1.0, length.out = dx), each = dy),

imag = rep(seq(-1.2, 1.2, length.out = dy), times = dx)

)

C <- matrix(C, dy, dx) # 복소수 행렬로 변환

X <- array(0, c(dy, dx, 20)) # 3D 배열 초기화

Z <- 0

for (k in 1:20) { # 20회 반복

Z <- Z^2 + C # 중심 차분 방정식

X[, , k] <- exp(-abs(Z)) # 결과 저장

}

write.gif(X, "Mandelbrot.gif", col = jet.colors, delay = 100)

4. 1. 제어 구조 및 서브루틴

R은 `for`, `if`, `while`, `repeat`, `switch`, `break`와 같은 구조화된 구문을 지원한다. 사용자 정의 함수(절차)를 정의할 수 있으며, 사용자 정의 이항 연산자도 정의할 수 있다. 함수는 `function` 함수를 사용하여 생성한다.[35]

다음은 팩토리얼을 계산하는 사용자 정의 함수를 생성하고, `toyfactorial`로 호출할 수 있도록 하는 예시이다.

```R

toyfactorial <- function (n) {

if (n <= 0) return(NA)

f <- function(i) {

if (i == 1) return(1) else return(i * Recall(i-1))

}

return(f(n))

}

```

위 코드는 함수의 중첩, 재귀 호출, 스코프를 보여주는 예시이다. R에서는 함수 내부에서 더 국소적인 함수를 생성할 수 있다. `f`는 국소 변수이므로, 함수 외부에 같은 이름의 변수가 있어도 영향을 주지 않는다. R에서는 호출 스택을 거슬러 올라가는 동적 스코핑도 가능하다.

`f` 내부에서는 자신의 이름을 참조할 수 없으므로, 자신을 재귀 호출하기 위해 `Recall` 함수를 사용한다. 함수형 인수를 이용할 수도 있으며, 이 경우 여러 함수가 서로 호출할 수 있고, 익명 함수를 그 자리에서 정의하여 함수형 인수로 전달할 수 있다. 이는 일종의 복문처럼 사용된다. NA는 통계 처리에서 중요한 특수한 데이터인 "결측값"으로, 데이터가 유효하지 않음을 나타낸다.[35]

4. 2. 객체 지향

R 언어는 객체 지향 프로그래밍을 기본적으로 지원한다. S3와 S4 두 가지 기본 프레임워크가 있다. S3는 비공식적이며 첫 번째 인수에 대한 단일 디스패치를 지원하고, 객체는 각 객체의 "class" 속성을 설정하여 클래스에 할당된다. S4는 다중 디스패치 및 다중 상속을 지원하는 공식 클래스(공통 리스프 객체 시스템(CLOS)와 유사한 시스템) ( S에서 파생됨) 및 제네릭 메서드로 구성된다.[39]

예를 들어, `summary`는 인수가 숫자 벡터인지 "factor"인지에 따라 다른 메서드로 디스패치되는 제네릭 함수이다.

```R

> data <- c("a", "b", "c", "a", NA)

> summary(data)

Length Class Mode

5 character character

> summary(as.factor(data))

a b c NA's

2 1 1 1

```

R은 인스턴스 생성 등 객체 지향 프로그래밍 기능도 갖추고 있다. R 언어에는 상속이나 메서드의 런타임 디스패치와 같은 객체 지향 프로그래밍 기법이 적용되어 있으며, 수많은 제네릭 함수를 가지고 있다. 이는 같은 함수 이름이라도, 다루는 객체가 속한 클래스에 따라 독자적인 방식으로 처리하는 것이다. R에서 클래스는 객체에 부속되는 속성 중 하나로 취급되며, 리스트로 보존된다.

4. 3. 데이터 형식

R은 수치형(복소수 포함), 문자형, 논리형과 같은 기본적인 자료형과 벡터, 리스트, 행렬과 같은 통계 처리 및 정보 처리에 필요한 자료형을 갖추고 있다. 함수 자체도 데이터로 취급된다.

데이터 프레임은 형태로 표현된 데이터를 저장하고 조작하는 데 유용하며, 열마다 다른 자료형을 가질 수 있다. 데이터 프레임은 행렬로부터 생성될 수도 있지만, 여기서는 리스트와의 관련성을 설명한다.

벡터는 데이터를 특정 순서로 나열한 것이다. 예를 들어 `2:5` 또는 `c(2, 3, 4, 5)`는 숫자 2, 3, 4, 5를 순서대로 나열한 것이다. `c('고양이', '고양이', '개')`와 같이 문자열이나 논리형 데이터를 요소로 하는 벡터를 만들 수도 있다.

리스트는 다양한 유형의 데이터를 나열한 것이다. 벡터의 리스트나 리스트의 리스트도 가능하다. `list` 함수로 생성할 수 있다.

```R

f1 <- c('고양이', '고양이', '개')

f2 <- c(1, 2, 3)

f <- list(field1 = f1, field2 = f2)

```

위 코드는 문자형 벡터 `f1`과 숫자형 벡터 `f2`에서 리스트 `f`를 생성한다. `field1`, `field2`는 리스트의 요소를 가리키는 "태그"이다.

두 벡터 `f1`, `f2`의 요소 수가 같다면, 리스트를 데이터 프레임으로 변환할 수 있다.

```R

df <- data.frame(f, row.names = c('たま ', 'みけ', 'ぽち'))

```

`df`는 데이터 프레임형 변수이며, 각 행에는 "たま", "みけ", "ぽち"라는 레이블이 붙는다.

데이터 프레임의 예시는 다음과 같다.

성별월령귀여움
たま고양이15
しろ고양이24
くろ고양이15
みけ고양이35
ぶち고양이123
とら고양이182
みゃぁ고양이304
猫じゃ고양이800
ぽち25
ころ105
たろ403
じろ403
じんぺい502
わん604
のらくろ1005



"개와 고양이"라는 변수에 데이터 프레임으로 할당하면, "고양이", "개", "♀", "♂" 등의 문자 데이터는 내부적으로 요인 또는 범주형 변수로 변환된다. 특정 열을 추출하려면 `변수명$태그명` (예: `개와고양이$월령`)과 같이 한다. 특정 행만 추출하려면 `subset` 함수 또는 `[ ]`를 사용한다. 예를 들어, "고양이"만 추출하여 `t.test`로 "귀여움" 평균값을 비교할 수 있다.

R은 통계, 검정, 분석을 위한 함수를 갖추고 있으며, 필요에 따라 함수를 정의하거나 패키지를 이용할 수 있다.

4. 3. 1. 벡터와 리스트

R에서 일반적으로 선호되는 할당 연산자는 화살표 모양(<-)이며, 등호(=)는 일부 경우에 사용할 수 있다.[34]

R 언어는 AT&T 벨 연구소가 개발한 S 언어의 문법과 Scheme의 데이터 처리 방식을 참고하여 만들어졌다.[172] 특히, "벡터 처리" 기능을 통해 유연하고 간편한 데이터 처리가 가능하다.

R에서 "벡터"는 수학적인 벡터보다는 "구조를 가진 데이터 집합"이라는 리스트에 가까운 의미를 가진다.[172] 즉, 실수, 복소수뿐만 아니라 배열, 리스트, 테이블 (데이터 프레임), 집합, 시계열 등 다양한 데이터를 변수에 담을 수 있다. 벡터의 요소는 다시 테이블이나 시계열의 배열과 같은 "중첩 구조"가 될 수 있다.

R에 내장된 연산과 함수는 대부분 벡터를 처리할 수 있도록 설계되어 있다.[172] 사용자 정의 함수를 벡터에 적용하기 위한 함수도 제공된다. 이러한 기능 덕분에 복잡한 데이터 구조를 쉽게 구축하고 관리할 수 있으며, 프로그램의 제어 구조를 단순화하여 코드의 가독성을 높일 수 있다.

예를 들어, 원주율몬테카를로 방법으로 근사하는 계산을 다음과 같이 간결하게 표현할 수 있다.[173]

```r

s <- 100000

x <- runif(s)

y <- runif(s)

sum(x^2 + y^2 <= 1) * 4 / s

```

위 코드는 0과 1 사이의 난수를 이용하여 반지름 1인 원 안에 들어가는 점의 개수를 세는 방식으로 원주율을 추정한다. 여기서 `sum` 함수는 조건 분기 계산을 암묵적으로 수행하여, 반복문 없이도 계산을 간결하게 표현할 수 있게 해준다.

벡터는 "논리 첨자"를 사용하여 특정 요소를 선택하거나 변경할 수 있다. 예를 들어, 피즈 버즈 문제는 다음과 같이 해결할 수 있다.

```r

# 1부터 100까지의 정수를 벡터로 생성

1:100 -> n -> Ans

# 3의 배수 위치에 "Fizz" 저장

Ans[n %% 3 == 0 -> FizzSet] <- "Fizz"

# 5의 배수 위치에 "Buzz" 저장

Ans[n %% 5 == 0 -> BuzzSet] <- "Buzz"

# 3과 5의 공배수 위치에 "FizzBuzz" 저장

Ans[FizzSet & BuzzSet] <- "FizzBuzz"

# 결과 출력

cat(Ans)

```

위 코드는 논리 벡터 `FizzSet`과 `BuzzSet`을 이용하여, 3의 배수와 5의 배수에 해당하는 위치에 각각 "Fizz"와 "Buzz"를, 두 조건을 모두 만족하는 위치에는 "FizzBuzz"를 저장한다.
벡터와 리스트의 차이점

  • 벡터: 데이터를 특정 순서로 나열한 것이다. `2:5` 또는 `c(2, 3, 4, 5)`는 숫자 2, 3, 4, 5를 순서대로 나열한 벡터이다. 숫자형 벡터 외에도 `c('고양이', '고양이', '개')`와 같이 문자열이나 논리형 데이터를 요소로 하는 벡터를 만들 수도 있다.
  • 리스트: 다양한 유형의 데이터를 나열한 것이다. 벡터의 리스트나 리스트의 리스트도 가능하다. `list` 함수를 사용하여 생성할 수 있다.


```R

f1 <- c('고양이', '고양이', '개')

f2 <- c(1, 2, 3)

f <- list(field1 = f1, field2 = f2)

```

위 코드는 문자형 벡터 `f1`과 숫자형 벡터 `f2`를 이용하여 리스트 `f`를 생성한다. `field1`과 `field2`는 리스트의 각 요소를 가리키는 "태그"이다.

4. 3. 2. 데이터 프레임

R에서 데이터 프레임은 표 형태의 데이터를 저장하고 조작하는 데 매우 유용한 구조이다. 데이터 프레임은 각 열(column)이 서로 다른 자료형(숫자형, 문자형, 논리형 등)을 가질 수 있다는 점에서 행렬(matrix)과 다르다. 이러한 특징 덕분에 데이터 프레임은 한국 사회의 다양한 데이터를 분석하는 데 널리 활용된다.

데이터 프레임은 여러 개의 벡터(vector)나 리스트(list)를 합쳐서 만들 수 있다. 예를 들어, 다음과 같이 이름, 나이, 성별 정보를 담은 데이터 프레임을 생성할 수 있다.

```R

name <- c("홍길동", "김영희", "이철수")

age <- c(20, 25, 30)

gender <- c("남", "여", "남")

df <- data.frame(이름 = name, 나이 = age, 성별 = gender)

```

데이터 프레임의 각 열은 '$' 기호를 사용하여 접근할 수 있다. 예를 들어, '나이' 열에 접근하려면 `df$나이`와 같이 입력한다. 특정 조건을 만족하는 행(row)만 추출하는 것도 가능하다. 예를 들어, '성별'이 "남"인 행만 추출하려면 다음과 같이 `subset()` 함수를 사용하거나,`[ ]`를 사용 할 수 있다.

```R

male_df <- subset(df, 성별 == "남")

male_df <- df[df$성별 == "남", ]

```

다음은 데이터 프레임을 생성하고 조작하는 예시이다.

```R

> new_df <- data.frame(t(z_matrix), row.names = c("A", "B")) # 전치된 z_matrix의 데이터를 포함하는 새로운 데이터 프레임 객체를 생성하며, 행 이름은 'A'와 'B'이다.

> names(new_df) <- c("X", "Y", "Z") # new_df의 열 이름을 X, Y, Z로 설정한다.

> print(new_df) # 현재 결과를 출력한다.

X Y Z

A 2 6 12

B 20 30 42

> new_df$Z # Z 열을 출력한다.

[1] 12 42

> new_df$Z == new_df['Z'] && new_df[3] == new_df$Z # 데이터 프레임 열 Z는 $Z, ['Z'], 또는 [3] 구문을 사용하여 액세스할 수 있으며, 값은 동일하다.

[1] TRUE

> attributes(new_df) # new_df 객체에 대한 속성 정보를 출력한다.

$names

[1] "X" "Y" "Z"

$row.names

[1] "A" "B"

$class

[1] "data.frame"

> attributes(new_df)$row.names <- c("one", "two") # row.names 속성에 액세스한 다음 변경한다. rownames()을 사용하여 수행할 수도 있다.

> new_df

X Y Z

one 2 6 12

two 20 30 42

```

`data.frame` 함수를 통해 데이터 프레임을 생성할 수 있으며, `attributes()`를 통해 데이터 프레임의 속성 정보를 확인할 수 있다.

데이터 프레임은 특히 대규모 데이터를 다룰 때 유용하며, 데이터 분석 결과를 표 형태로 정리하고 시각화하는 데에도 필수적이다. 예를 들어, 다음과 같은 표 형태의 데이터를 보자:

성별월령귀여움
たま고양이15
しろ고양이24
くろ고양이15
みけ고양이35
ぶち고양이123
とら고양이182
みゃぁ고양이304
猫じゃ고양이800
ぽち25
ころ105
たろ403
じろ403
じんぺい502
わん604
のらくろ1005



위와 같은 표는 R에서 데이터 프레임으로 처리하기에 매우 적합하다. 데이터 프레임을 사용하면, "개와 고양이" 데이터에서 "월령"별 "귀여움"의 평균을 쉽게 계산하거나, 특정 종(예: 고양이)만 선택하여 분석하는 등 다양한 데이터 조작을 간편하게 수행할 수 있다.

5. 기능

R은 선형 및 비선형 모델링, 고전 통계 테스트, 시계열 분석, 분류, 클러스터링 등 다양한 통계 및 그래픽 기술을 구현한다. R는 기능 및 확장을 통해 쉽게 확장 가능하며, R 커뮤니티는 패키지와 관련된 적극적인 기여로 유명하다. R의 표준 함수 중 많은 부분은 R 자체로 작성되어 사용자가 쉽게 알고리즘을 사용할 수 있다. 계산 작업의 경우 C, C++, Fortran 코드를 런타임에 링크하고 호출할 수 있으며, R 객체를 직접 C, C++,[191] Java,[192] .NET,[193] 또는 Python 코드로 작성할 수 있다. R은 많은 사람들이 만든 패키지를 공유해 특정 기능이나 특정 분야의 연구 분야에서 확장성이 뛰어나다. S의 전통으로 인해 R는 대부분의 통계 컴퓨팅 언어보다 강력한 객체 지향 프로그래밍 기능을 제공한다.

R의 또 다른 장점은 수학 그래픽을 포함해 고품질의 그래프를 만들 수 있는 정적 그래픽이다. 다이나믹하고 인터랙티브 한 그래픽도 추가 패키지를 통해 제공된다.[194][195]

R에는 LaTeX와 유사한 자체 문서 형식인 Rd(R documentation,Rd format)[196]가 있으며, 이는 온라인과 하드카피에서 포괄적인 문서를 제공하는 데 사용된다. R 언어는 문법적으로 통계 분석 부분은 AT&T 벨 연구소가 개발한 S 언어를 참고하고 있으며, 데이터 처리 부분은 Scheme의 영향을 받고 있다.[172] 최소한의 노력으로 파악하기 쉽게 분석하기 위해 고안된 명령 체계를 갖추고 있다.

R은 다음과 같은 다양한 기능을 제공한다.


  • 벡터, 배열, 행렬, 데이터 프레임(테이블에 상당), 리스트, 시계열 등의 동적 타이핑데이터 형식을 지원한다. ("데이터 형식" 참조)
  • 고차 함수(데이터로서 함수를 조작하는 함수)를 벡터 처리로 기술할 수 있다.
  • 이름이 지정된 인수 플레이스홀더 " _ "를 활용할 수 있는 네이티브 파이프 연산자 " |> "를 지원한다.
  • '모델식'의 도입으로 복잡한 통계 모델 기술과 곡선 적합 등의 모델 적합 지시를 간결하고 통일적으로 표현할 수 있다.
  • 결측값(NA) · 무효값(NULL) · 무한대(Inf, -Inf) · 비수치(NaN) 등의 상수와 그 검사 함수를 제공한다.
  • 집합 계산, 복소수 계산, 시간 날짜 계산, 인자 계산을 지원한다.
  • d (확률 밀도 함수) · p (누적 분포 함수) · q (분위 함수) · r (난수 생성)의 4가지 기능과 분포명을 조합하는 명명 규칙을 갖는 다차원 확률 분포 기능 함수를 제공한다.[174]
  • rep, seq, sequence, seq.Date, seq.POSIXt, combn, expand.grid, replicate 등 벡터 시퀀스의 규칙 생성 함수군을 제공한다.
  • mean, sum, cumsum, cumprod, rowMeans, table 등의 집약 함수군을 제공한다.
  • apply, lapply, by 등의 범용 함수군과 Reduce, Map, Filter 등의 고수준 함수군을 제공한다.
  • sample 함수에 의한 수치, 복소수, 문자열 등의 가중 표본 추출(샘플링) 기술을 제공한다.
  • 객체 지향(함수, 대입식도 객체) 프로그래밍을 지원한다. ("객체 지향" 참조)
  • 단순한 구문, 데이터 형식 선언 불필요, 이름 공간을 지원한다. ("사양" 참조)
  • 문자열, 식의 상호 변환이나 패턴 매칭 검색, 편집 등의 문자열 조작 기능을 제공한다.
  • 대화형 처리뿐만 아니라 배치 처리도 가능하다.
  • 분석 수법의 비교 검증에 필수적인 "정석의 검증용 데이터 모음"을 제공한다.
  • 신경망, 결정 트리, 클러스터, 주성분, 인자 분석, 다변량 분석, 선형, 비선형, 자기 상관 모델 등, 다수의 고수준 내장 함수군을 제공한다.
  • 이미지 처리, 음성 합성, GIS, 텍스트 마이닝 등 '''CRAN'''에 의해 날마다 강화되는 확장 기능을 제공한다.
  • 의사 난수 생성법으로 메르센 트위스터(기본값 설정) 및 기타 다양한 생성법을 선택할 수 있다.
  • 모든 플랫폼에서 64bit를 지원한다.
  • 인터프리터이면서도 행렬과 같은 복잡한 데이터 구조에 최적화된 고속의 내장 함수 집합을 갖는다. ("처리 속도" 참조)
  • 더욱 빠른 계산이 요구될 경우 C, C++, FORTRAN 등의 외부 프로그램과 동적 링크하여 확장할 수 있다.
  • 다른 통계 소프트웨어(엑셀 등)의 데이터 읽기를 지원한다.[175] ("데이터 입출력" 참조)
  • ODBC 지원을 통해 다양한 데이터베이스에 접근할 수 있다.
  • 웹 등 다양한 데이터 소스로부터의 입력 형태에 대응하는 "커넥션 기능"을 갖추고 있다.
  • 멀티 플랫폼, 오픈 소스이며 무상이기 때문에 누구나 동일한 작업 환경을 구축할 수 있다.
  • "명령어 문법이 단순하다", "고수준의 통계 분석 및 시각화 기능, 영속적인 이용에 견딘다" 등의 이유로 교육 기관에서 통계학 교육이나 통계 처리를 필요로 하는 강의에서 이용하기 쉽고, 프로그래밍에 시간을 낭비하지 않고 통계 분석 교육 및 학습에 전념할 수 있으며, 분석의 전문적인 도구이므로 학습 기술은 나중에 실천에서 활용할 수 있다. ("프로그램 입수", "지속 가능한 통계 환경", "최근 전개" 참조)


R은 멀티 패러다임 프로그래밍 언어이다. 광의의 함수형 프로그래밍 언어 중 하나인 Scheme의 영향을 받아, 리스트를 기반으로 한 내부 처리, 지연 평가, 정적 스코프 등의 특징을 가진다. 인스턴스 생성 등 객체 지향 프로그래밍 기능도 갖추고 있다. 절차적인 표기법은 C 언어의 영향을 받았다. "Hello, world" 프로그램의 코드와 실행 결과는 다음과 같다.

```R

> print("Hello world")

[1] "Hello world"

```

`for`, `if`, `while`, `repeat`, `switch`, `break` 와 같은 구조화 구문이 있다. 자체 함수(절차)를 정의할 수 있으며, 자체 2항 연산자조차 정의할 수 있다. 함수는 `function` 함수로 생성한다. 다음은 팩토리얼을 계산하는 자체 함수를 생성하여, `toyfactorial`로 호출할 수 있도록 하는 예시이다.



toyfactorial <- function (n) {

if (n <= 0) return(NA)

f <- function(i) {

if (i == 1) return(1) else return(i * Recall(i-1))

}

return(f(n))

}



위 코드는 함수의 중첩, 재귀 호출, 스코프를 보여주는 예시이다. R 언어에서는 파스칼이나 Modula-2처럼 함수의 중첩이 가능하다. 이 예시에서는 함수 내부에서 더욱 국소적인 함수를 생성하여 `f`로 참조하고 있다. 스코프도 파스칼 등과 마찬가지로 사전식으로, 함수 `f` 안에서는 그 바깥에 있는 `toyfactorial`의 변수가 "보인다". `f`는 국소 변수이므로 함수 외부에 같은 이름의 변수가 있어도 영향을 주지 않는다. 다만, R에서는 호출 스택을 거슬러 올라가는 동적 스코핑도 실현 가능하다.

`f`의 내부에서는 자신의 이름을 참조할 수 없으므로, 자신을 재귀적으로 호출하기 위해 `Recall` 함수를 사용하고 있다. 함수형 인수를 이용할 수도 있으며, 이 경우 여러 함수가 서로 호출할 수 있으며, 또한 익명 함수를 그 자리에서 정의하여 함수형 인수로 전달할 수 있다. 일종의 복문과 같은 용도로 사용된다. NA(not available)는 통계 처리에서는 빼놓을 수 없는 특수한 데이터 "결손값"(missing value)으로, 데이터가 무효임을 나타낸다.

R 언어의 함수는 그 자체가 객체이며, 어떤 함수 자체를 외부에서 참조하거나 재작성할 수 있다. 함수의 본체 부분을 반환하는 `body` 함수, 가인수 리스트를 반환하는 `formals` 함수, 함수에 부수하는 환경을 반환하는 `environment` 함수 등이 준비되어 있다.

전달된 식 그 자체를 조작 가능하며, 특정 환경(이름과 포인터의 리스트) 하에서 주어진 식을 평가하는 `eval` 함수, 전달된 식의 요소를 환경에 따라 대체하는 `substitute` 함수, 식을 문자열로 분해하는 `deparse` 함수 등이 있다.

함수 호출도 일종의 리스트로 처리되며, 다음과 같이 `call` 함수를 이용하여 함수명과 인수의 리스트로부터 함수 호출 객체를 생성할 수 있다.



x <- 1:3

y <- 2:4

z <- call('plot', x, y)

eval(z)



함수는 파일에서 읽어올 수도 있으며, 더 나아가 패키지로 묶을 수도 있다. R 언어에는 상속이나 메서드의 런타임 디스패치와 같은 객체 지향 프로그래밍 기법이 적용되어 있으며, 수많은 제네릭 함수를 가지고 있다. 이는 같은 함수 이름이라도, 다루는 객체가 속한 클래스에 따라 독자적인 방식으로 처리하는 것이다. R에서는 클래스가 객체에 부속되는 속성 중 하나로 취급되며, 리스트로 보존된다. 수치형(복소수 포함), 문자형, 논리형과 같은 기본적인 자료형과 벡터, 리스트, 행렬과 같은 통계 처리 및 정보 처리에 필요한 자료형을 갖추고 있다. 앞서 언급했듯이 함수 자체도 데이터이다. 데이터 프레임은 배열 또는 리스트의 확장 버전으로, 열마다 다른 자료형을 가질 수 있으므로, 형태로 표현된 데이터를 저장/조작하는 데 유용하다. 데이터 프레임은 행렬로부터 생성될 수도 있지만, 여기서는 리스트와의 관련성을 설명한다. R은 표준 상태에서도 통계, 검정, 분석을 위한 강력한 함수를 갖추고 있으며, 필요에 따라 새로운 함수를 정의하거나(앞서 언급했듯이, C나 FORTRAN 등으로 기술하고, 외부에서 컴파일한 함수를 호출할 수 있다), 직접 프로그램을 작성하지 않아도 많은 패키지를 이용할 수 있다. 이에 더해 편리한 입출력 기능과 그래프 작성 기능을 갖추고 있다.

5. 1. 데이터 입출력

R은 텍스트 파일, 이진 데이터, 이미지 등 다양한 형식의 데이터를 읽고 쓸 수 있는 기능을 제공한다.

  • 텍스트 파일 입출력:
  • `scan` 함수: 벡터를 읽어온다.
  • `read.table` 함수: 데이터 프레임을 간편하게 읽는다.
  • `read.csv("파일명")`: CSV 형식의 파일을 읽어 R의 표준 테이블 데이터 형식인 데이터 프레임으로 자동 변환한다.
  • `read.table("mytsv.txt", header=T, sep="\t")`: 탭으로 구분된 텍스트 형식(TSV) 파일을 읽는다.

  • 이진 데이터 처리:
  • SPSS, SAS 등 통계 분석 패키지의 고유 형식 이진 데이터를 직접 다룰 수 있다.
  • 이미지를 이진 데이터로 읽어 행렬로 처리하여 이미지 처리에 활용할 수 있다.

  • 기타:
  • 파이프와 소켓(포트 참조)을 다루는 함수를 제공한다.
  • ODBC 지원을 통해 다양한 데이터베이스에 접근할 수 있다.
  • 웹 등 다양한 데이터 소스로부터의 입력 형태에 대응하는 "커넥션 기능"을 갖추고 있다.[175]

5. 2. 데이터 플롯

R 언어는 데이터 모델링과 그래픽을 내장 지원한다. 다음 예제는 R이 선형 모델을 생성하고 잔차와 함께 플로팅하는 방법을 보여준다.[1]

```r

# x 및 y 값 생성

x <- 1:6

y <- x^2

# 선형 회귀 모델 y = A + B * x

model <- lm(y ~ x)

# 모델의 자세한 요약 표시

summary(model)

# 그림에 대한 2x2 레이아웃 생성

par(mfrow = c(2, 2))

# 모델의 진단 그림 출력

plot(model)

```

출력:[1]

```text

잔차:

1 2 3 4 5 6 7 8 9 10

3.3333 -0.6667 -2.6667 -2.6667 -0.6667 3.3333

계수:

추정 표준 오차 t 값 Pr(>|t|)

(절편) -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

```

진단 그림은 "모델" 플로팅에서 가져온 것이다. 레이블에 허용된 수학적 표기법에 유의하다(왼쪽 아래 그림).


데이터의 그래프·도해 기능이 유연하며 인포그래픽 환경이라고도 부를 수 있을 정도로 고도화된 그래프 작성 소프트웨어 기능을 갖추고 있으며 사용자 고유의 도해 정의도 프로그램이 용이하다.[1]

그래프 이미지를 여러 이미지 형식·상업 인쇄 품질로 출력할 수 있다.[1]

`plot` 함수를 사용하면 다양한 플롯을 그릴 수 있다. `plot`은 제네릭 함수이며, 인수로 전달된 데이터의 종류에 따라 자동으로 다양한 그래프를 그린다. 그 외에 히스토그램을 그리는 함수, 이미지를 그리는 함수 등 고수준의 그리기 함수가 있다. 이들은 기본적으로도 기능하지만, 세부적인 매개변수를 지정할 수도 있다. 게다가, 단순히 선을 긋거나 점을 찍는 저수준의 그리기 함수도 제공되므로 원하는 그래프를 생성할 수 있다. 플롯은 화면뿐만 아니라 PDF, SVG, PostScript, PNG와 같은 형식으로 직접 출력할 수 있다.[1]

그림은 기본 상태에서의 플롯 예시를 보여준다. 위에서부터 차례대로 `plot(개고양이$종, 개고양이$성별)` · `plot(sin(seq(0, 2 *pi, 0.1)))` · `image(x <- -50:50, x, x %*% t(x))` 의 실행 결과이다. `seq` 함수는 등차수열로 구성된 벡터를 생성한다. `%*%`는 행렬의 곱을 계산하는 연산자, `t`는 전치 행렬을 생성하는 함수이다. 첫 번째 예시는 앞서 다룬 동물 종별 성비를 표시하고, 다음 예시는 사인 함수(자동으로 벡터의 첨자가 가로축이 되고, 벡터 생성식이 세로축 레이블이 됨)를 표시하며, 마지막 예시에서는 인수를 평가하는 과정에서 벡터를 생성하여 x에 대입하고, 곱을 계산하여, 각 요소의 값을 색의 농도로 표현한다.[1]

5. 3. 작업 공간 저장

R은 현재 작업 상황에 이름을 붙여 저장하고 나중에 다시 불러와 사용할 수 있는 기능을 제공한다.[173] 이 기능은 명령 실행 콘솔의 내용도 함께 저장하므로, 어떤 처리를 통해 결과를 얻었는지 정확하게 기록하고 재현할 수 있게 해준다.[173] 이는 특히 발견적 조작을 필요로 하는 연구 및 분석 과정에서 매우 중요한 요소로 작용하여, 연구의 재현성을 높이는 데 기여한다.

6. 패키지

R 패키지는 R의 기능을 확장하는 함수, 문서 및 데이터 모음이다.[15] 예를 들어, RMarkdown, Quarto,[16] knitr, Sweave와 같은 보고서 기능을 추가한다. 또한, 선형 모델, 일반화 선형 및 비선형 모델링, 고전적인 통계 검정, 공간, 시계열 분석, 클러스터링과 같은 다양한 통계 기법을 구현하는 기능을 추가한다. 쉬운 패키지 설치 및 사용은 이 언어가 데이터 과학 분야에서 채택되는 데 기여했다.[17]

캡션 참조
바이올린 플롯은 R 시각화 패키지 ggplot2로 생성됨


R 언어는 "벡터 처리"라는 실행 기구를 통해 유연한 처리를 간편한 표기로 실현하고 있다. 여기서 "벡터"는 "구조를 가진 데이터 집합"이라는 "리스트"에 가까운 의미를 갖는다. 실수, 복소수는 물론, 배열, 리스트, 테이블, 집합, 시계열 등과 같은 복잡한 구조를 가진 데이터도 특별한 선언 없이 변수에 넣을 수 있다. 벡터의 요소가 다시 테이블이나 시계열의 배열 등과 같은 "중첩 구조"여도 상관없다.

R에 내장된 연산, 함수는 벡터를 처리할 수 있으며, 사용자 정의 함수를 벡터에 대응시키기 위한 함수도 있다. 이러한 R의 연산자와 함수는 벡터의 모든 요소에 순서대로 작용하거나 조사하는 구조로 되어 있어 프로그램 전체의 제어 구조가 단순화된다.

다음은 R을 이용한 피즈 버즈 문제의 해답 예시이다.

```r

# FizzBuzz 문제·R 언어의 코드

# 1부터 100까지의 정수를, 벡터로 생성 (n: 가공 전의 수열 · Ans: 가공 후의 결과용 수열)

1:100 -> n -> Ans

# 3의 배수 FizzSet 상당의 Ans 요소를, 문자열 "Fizz"로 변경 (FizzSet: 3의 배수 위치를 나타내는 논리 벡터)

Ans[n %% 3 == 0 -> FizzSet] <- "Fizz"

# 5의 배수 BuzzSet 상당의 Ans 요소를, 문자열 "Buzz"로 변경 (BuzzSet: 5의 배수 위치를 나타내는 논리 벡터)

Ans[n %% 5 == 0 -> BuzzSet] <- "Buzz"

# 두 배수의 공통 집합 상당의 Ans 요소를, 문자열 "FizzBuzz"로 변경

Ans[FizzSet & BuzzSet] <- "FizzBuzz"

# 출력

cat(Ans)

6. 1. CRAN 패키지

R 패키지는 R의 기능을 확장하는 함수, 문서, 데이터 모음을 말한다.[15] 패키지는 RMarkdown, Quarto,[16] knitr, Sweave와 같은 보고서 작성 기능을 추가할 수 있다. 또한, 선형 모델, 일반화 선형 모델, 비선형 모델, 고전적인 통계 검정, 공간 분석, 시계열 분석, 클러스터링 등 다양한 통계 기법을 구현하는 기능을 추가한다. 이러한 패키지의 쉬운 설치 및 사용은 R이 데이터 과학 분야에서 널리 채택되는 데 기여했다.[17]

R을 시작할 때 기본 패키지를 즉시 사용할 수 있으며, 여기에는 프로그래밍, 컴퓨팅, 그래픽 제작, 기본 산술 및 통계 기능을 위한 필수 구문과 명령이 포함되어 있다.[18]

포괄적인 R 아카이브 네트워크(CRAN)는 1997년 Kurt Hornik과 Friedrich Leisch에 의해 설립되었으며, R의 소스 코드, 실행 파일, 문서, 사용자 제작 패키지를 호스팅한다.[19] CRAN의 이름과 범위는 포괄적인 TeX 아카이브 네트워크와 포괄적인 펄 아카이브 네트워크를 모방한 것이다.[19] CRAN은 처음에는 3개의 미러와 12개의 기여 패키지로 시작했지만, 현재는 99개의 미러[21]와 21,513개의 기여 패키지를 보유하고 있다.[22] R 패키지는 R-Forge, Omegahat, GitHub와 같은 저장소에서도 পাওয়া যায়.[23][24][25]

CRAN 웹사이트의 [https://cran.r-project.org/web/views/ 작업 보기]에서는 금융, 유전학, 고성능 컴퓨팅, 머신 러닝, 의료 영상, 메타 분석, 사회 과학, 공간 통계 등 다양한 분야의 패키지 목록을 확인할 수 있다.

Bioconductor 프로젝트는 유전체 데이터 분석, 상보적 DNA, 마이크로어레이, 고처리량 시퀀싱 방법을 위한 패키지를 제공한다.

tidyverse 패키지는 각 관측치에 대해 단일 행, 각 변수에 대해 단일 열을 갖는 2차원 테이블 형태의 "tidy data"[26]를 처리하는 작업에 대한 공통 인터페이스를 제공하는 여러 보조 패키지를 묶은 것이다.[27]

패키지 설치는 한 번만 수행하면 된다. 예를 들어, ''tidyverse'' 패키지를 설치하려면 다음과 같은 코드를 실행한다.[27]



> install.packages("tidyverse")



설치된 패키지의 함수, 데이터, 문서를 로드하려면 `library()` 함수를 사용한다. ''tidyverse'' 패키지를 로드하는 코드는 다음과 같다.



> # 패키지 이름은 따옴표로 묶을 수 있습니다.

> library("tidyverse")

> # 하지만 패키지 이름은 따옴표 없이 호출할 수도 있습니다.

> library(tidyverse)



R에서 패키지는 R 언어 프로그램을 배포하기 위한 형식으로, 함수, 데이터셋, 레퍼런스 매뉴얼 등을 포함한다. 이는 일종의 완성된 애플리케이션, 함수 라이브러리, 데이터베이스와 같다고 볼 수 있다. R에는 몇 가지 표준 패키지가 기본적으로 포함되어 있으며, 예를 들어 3층 신경망 (nnet) 등을 바로 사용할 수 있다.

CRAN을 통해 인터넷에서 패키지 목록 검색, 다운로드, 설치, 작업 영역 로드, 업데이트를 R 시스템이 관리한다. 패키지 간의 함수 의존 관계도 자동으로 처리되므로 사용자가 별도로 신경 쓸 필요가 없다. CRAN은 R과 완벽하게 통합된 기능의 일부이며, 전 세계 R 사용자들이 만든 패키지를 자유롭게 사용할 수 있다. CRAN은 R 자산의 지식 공유 메커니즘이며, 이를 통해 R의 기능은 지속적으로 강화되고 있다. R 자체만으로도 풍부한 기능을 제공하지만, 사용자들의 실무 경험이 반영된 다양한 패키지는 큰 도움이 된다.

패키지는 수동으로 다운로드할 수도 있지만, 상호 의존 관계 해결, 설치, 업데이트, 로드 관리는 R 시스템에 일임하는 것이 편리하다. R 시스템에서 패키지를 관리하려면 사용할 CRAN 사이트를 등록해야 하며, 이 설정은 한 번만 수행하면 된다.[177] CRAN 설정 없이도 R을 사용할 수 있으며, 오프라인 환경에서도 문제없이 R을 사용할 수 있다. 필요한 경우 언제든지 CRAN에 다시 접속하여 패키지를 관리할 수 있다.

R에는 사용자가 직접 패키지를 만들 수 있는 툴킷이 표준 패키지로 포함되어 있다.

6. 2. Bioconductor

생명 과학 분야를 위한 R 패키지 프로젝트인 '''Bioconductor'''가 시작되어 이미 많은 게놈 규모 관련 패키지가 배포되고 있다. Bioconductor는 게놈 스케일 데이터(대규모 유전자 발현 프로파일, 질량 분석 데이터, 단백질 상호작용 데이터 등)를 분석하는 프로그램과 데이터를 R 패키지 형태로 R 사용자에게 배포하는 시스템이다.[181]

7. 인터페이스

R은 명령줄 콘솔과 함께 설치된다. RStudio 외에도 R.app[28] (OSX/macOS 전용), Rattle GUI, RKWard, Tinn-R[29] 등 다양한 통합 개발 환경(IDE)을 사용할 수 있다.

R을 지원하는 범용 IDE에는 [https://marketplace.eclipse.org/content/statet-r/ StatET 플러그인]을 통한 이클립스와 R Tools for Visual Studio를 통한 Visual Studio가 있다.

R을 지원하는 소스 코드 편집기에는 Emacs, [https://www.vim.org/scripts/script.php?script_id=2628 Nvim-R 플러그인]을 통한 Vim, Kate, Sweave를 통한 LyX, WinEdt ([https://cran.r-project.org/package=RWinEdt website]), Jupyter ([https://docs.anaconda.com/anaconda/navigator/tutorials/r-lang/ website])가 있다.

R을 지원하는 스크립트 언어에는 Python ([https://rpy2.github.io website]), Perl ([https://metacpan.org/module/Statistics::R website]), Ruby ([https://github.com/alexgutteridge/rsruby source code]), F# ([https://bluemountaincapital.github.io/FSharpRProvider/ website]), Julia ([https://github.com/JuliaInterop/RCall.jl source code])가 있다.

R을 지원하는 범용 프로그래밍 언어에는 [https://cran.r-project.org/web/packages/Rserve/index.html Rserve 소켓 서버]를 통한 Java, .NET C# ([https://rdotnet.github.io/rdotnet/ website])가 있다.

R을 백그라운드에서 사용하는 통계 프레임워크에는 Jamovi와 JASP가 있다.

7. 1. CUI와 GUI

R은 기본적으로 CUI 방식의 "콘솔 창"을 통해 사용되며, 명령어를 텍스트로 입력하여 조작한다. 그러나 사용자의 편의를 위해 다양한 GUI 환경도 제공된다. 대표적인 GUI 환경은 다음과 같다.

  • R Commander: CRAN에서 패키지 형태로 제공되는 GUI로, 마우스 조작을 통해 R을 사용할 수 있게 해준다.
  • '''RStudio''': R을 더 편리하게 사용할 수 있도록 개발된 오픈 소스 IDE이다.
  • '''Tinn-R''': R용 IDE 중 하나이다.


이 외에도, gretl (GNU 시계열 분석 환경)의 GUI를 통해 R을 조작할 수 있으며, 데이터 분석 프로세스를 플로우차트 형식으로 시각화하여 프로그래밍할 수 있는 '''R AnalyticFlow'''라는 소프트웨어도 기업에서 무료로 제공된다.

8. 처리 속도

R은 인터프리터 언어이기 때문에 처리 속도가 느리다는 평가를 받기도 하지만, 실제로는 S의 상용판인 S-PLUS보다 빠른 경우가 많다. 또한, 범용 행렬 계산 언어의 표준인 MATLAB과 그 파생 언어인 GNU Octave, Scilab보다도 전반적으로 빠르다는 평가를 받는다.[188][189][190]

R의 높은 생산성은 "통계 계산에 특화된 정보 처리" 기능을 충분히 활용함으로써 발휘된다. 특히 계산 속도와 관련하여 다음과 같은 기본적인 방법들이 제시된다.


  • 내장 함수 활용: R 언어에 내장된 함수들은 고도로 최적화되어 있으므로, 이를 적극 활용하고 같은 기능을 새로 코딩하는 것은 지양해야 한다.
  • 벡터화 연산: 벡터를 한 번에 처리하는 함수를 사용하고, 벡터 요소를 하나씩 처리하는 방식은 피해야 한다.
  • 논리 첨자 집합 조작: 논리 판단을 포함하는 루프 처리는 지양하고, 논리 첨자 집합을 조작하여 한 번에 결과를 얻는 방법이 권장된다.
  • 표준 함수 활용: 자체 코드를 작성하기보다( 바퀴의 재발명 ) 예를 들어, 정렬의 경우 R 표준 함수인 "sort"를 사용하는 것이 훨씬 빠르다.[180]


R은 SIMD와 같은 통계 분석에 자주 사용되는 고급 처리 개념을 직접 기술할 수 있어, "실행 가능한 의사 코드" 환경이나 "프로토타이핑 도구"로 활용될 수 있다. 즉, R을 통해 로직을 검증하고, 실행 속도가 중요한 경우에 다른 언어로 최적화하는 방식으로 개발 전체를 가속화할 수 있다.

베오울프 클러스터와 같은 병렬화된 리눅스 환경에서, R은 병렬 프로그래밍 패키지를 통해 병렬 처리를 지원한다.[188][189][190]

9. R의 활용

R은 선형 및 비선형 모델링, 고전 통계 테스트, 시계열 분석, 분류, 클러스터링 등 다양한 통계 및 그래픽 기술을 구현한다. 기능 및 확장이 용이하며, R 커뮤니티는 패키지를 통한 적극적인 기여로 유명하다. R의 표준 함수는 대부분 R 자체로 작성되어 사용자가 알고리즘을 쉽게 이해하고 활용할 수 있다. 계산 작업의 경우 C, C++, Fortran 코드를 런타임에 링크하고 호출할 수 있으며, R 객체를 직접 C, C++, [191] Java,[192] .NET,[193] Python 코드로 작성할 수 있다.

R은 수학 그래픽을 포함한 고품질의 정적 그래프를 생성할 수 있으며, 추가 패키지를 통해 동적이고 인터랙티브한 그래픽도 지원한다.[194][195] 또한, LaTeX와 유사한 자체 문서 형식인 Rd를 사용하여 온라인 및 오프라인 문서를 제공한다.[196]

R 코어 팀은 1997년에 R 소스 코드를 유지하기 위해 설립되었고, 통계 컴퓨팅을 위한 R 재단은 2003년 4월에 설립되어 재정적 지원을 제공하고 있다. R 컨소시엄은 R 인프라 개발을 위한 리눅스 재단 프로젝트이다.

''The R Journal''은 R의 사용과 개발에 관한 기사를 싣는 오픈 액세스, 학술 저널이다. 여기에는 패키지, 프로그래밍 팁, CRAN 뉴스 및 재단 뉴스에 관한 기사가 포함된다.

R 커뮤니티는 다음과 같은 다양한 컨퍼런스와 모임을 개최한다.


  • UseR!: 연례 국제 R 사용자 컨퍼런스([https://www.r-project.org/conferences/])
  • 통계 컴퓨팅 방향 (DSC)([https://www.r-project.org/conferences/])
  • R-Ladies: R 커뮤니티의 성 다양성을 증진하기 위한 단체([https://rladies.org])
  • SatRdays: 토요일에 열리는 R 중심 컨퍼런스([https://satrdays.org/])
  • R 컨퍼런스([https://rstats.ai/])
  • posit::conf (구 rstudio::conf)([https://www.posit.co/conference/])

9. 1. 금융 공학

R과 그 라이브러리는 선형 및 비선형 모델링, 고전 통계 테스트, 시계열 분석, 분류, 클러스터링 등 다양한 통계 및 그래픽 기술을 구현한다. R은 기능 및 확장을 통해 쉽게 확장 가능하며 R 커뮤니티는 패키지와 관련된 적극적인 기여로 유명하다. R의 또 다른 장점은 수학 그래픽을 포함해 고품질의 그래프를 만들 수 있는 정적 그래픽이다. 다이나믹하고 인터랙티브 한 그래픽도 추가 패키지를 통해 제공된다.[194][195]

9. 2. 시계열 분석

R과 R 라이브러리는 선형 및 비선형 모델링, 고전 통계 테스트, 시계열 분석, 분류, 클러스터링 등 다양한 통계 및 그래픽 기술을 구현한다.[191][192][193]

9. 3. 기계 학습 및 데이터 마이닝

R과 그 라이브러리는 선형 및 비선형 모델링, 고전 통계 테스트, 시계열 분석, 분류, 클러스터링 등 다양한 통계 및 그래픽 기술을 구현한다.[191] R은 기능 및 확장을 통해 쉽게 확장 가능하며, R 커뮤니티는 패키지를 통한 적극적인 기여로 유명하다. 계산 작업의 경우 C, C++, Fortran 코드를 런타임에 링크하고 호출할 수 있으며, R 객체를 직접 C, C++,[192] Java,[193] .NET, Python 코드로 작성할 수 있다.

9. 4. 바이오인포매틱스

생명 과학 분야를 위한 R 패키지 프로젝트인 '''Bioconductor'''가 시작되어 이미 많은 게놈 규모 관련 패키지가 배포되고 있다. 게놈 스케일 데이터의 제반 정보, 즉 대규모 유전자 발현 프로파일, 질량 분석 데이터, 단백질 상호작용 데이터 등을 분석하는 프로그램과 데이터를 R 패키지로 R 사용자에게 배포하는 시스템이다.[181]

9. 5. 공공 정책

R은 선형 및 비선형 모델링, 고전 통계 테스트, 시계열 분석, 분류, 클러스터링 등 다양한 통계 및 그래픽 기술을 구현하여 공공 정책 결정에 활용될 수 있다. R 커뮤니티는 패키지 개발에 적극적으로 참여하여 R의 기능을 확장하고 있으며, 이는 공공 정책 분야에서도 유용하게 활용될 수 있다.[191][192][193]

10. 한국어 지원

함수명, 변수명, 주석 등에 한국어를 사용할 수 있다.

11. R 버전 이름

R 버전 2.14.0부터 모든 R 버전 릴리스는 피너츠 코믹스와 영화를 언급하는 코드명을 가지고 있다.[40][41][42]

R 버전 릴리스의 명명 아이디어는 데비안 및 우분투 버전 명명 시스템에서 영감을 받았다. R 핵심 개발자 피터 달가드(Peter Dalgaard)는 R 코드명에 피너츠 레퍼런스를 사용하는 또 다른 이유는 "통계학의 모든 사람이 P-nut이기 때문"이라고 언급했다.[43]

R 릴리스 코드명
버전릴리스 날짜이름피너츠 레퍼런스참고
4.4.12024-06-14Race for Your Life[44][45]
4.4.02024-04-24Puppy Cup[46][47]
4.3.32024-02-29Angel Food Cake[48][49]
4.3.22023-10-31Eye Holes[50][51]
4.3.12023-06-16Beagle Scouts[52][53]
4.3.02023-04-21Already Tomorrow[54][55][56][57]
4.2.32023-03-15Shortstop Beagle[58][59]
4.2.22022-10-31Innocent and Trusting[60][61]
4.2.12022-06-23Funny-Looking Kid[62][63][64][65][66][67][68]
4.2.02022-04-22Vigorous Calisthenics[69][70]
4.1.32022-03-10One Push-Up[69][71]
4.1.22021-11-01Bird Hippie[72][73][71]
4.1.12021-08-10Kick Things[74][75]
4.1.02021-05-18Camp Pontanezen[76][77]
4.0.52021-03-31Shake and Throw[78][79]
4.0.42021-02-15Lost Library Book[80][81][82][83]
4.0.32020-10-10Bunny-Wunnies Freak Out[84][85]
4.0.22020-06-22Taking Off Again[86][87]
4.0.12020-06-06See Things Now[88][89]
4.0.02020-04-24Arbor Day[90][91]
3.6.32020-02-29Holding the Windsock[92][93]
3.6.22019-12-12Dark and Stormy Night어두운 밤과 폭풍우 치는 밤 참조[94][95]
3.6.12019-07-05Action of the Toes[96][97]
3.6.02019-04-26Planting of a Tree[98][99]
3.5.32019-03-11Great Truth[100][101]
3.5.22018-12-20Eggshell Igloos[102][103]
3.5.12018-07-02Feather Spray[104][105]
3.5.02018-04-23Joy in Playing[106][107]
3.4.42018-03-15Someone to Lean On[108][109]
3.4.32017-11-30Kite-Eating Tree연을 먹는 나무 참조[110][111]
3.4.22017-09-28Short Summer짧은 여름이었어, 찰리 브라운 참조[112]
3.4.12017-06-30Single Candle[113][114]
3.4.02017-04-21You Stupid Darkness[113][115]
3.3.32017-03-06Another Canoe[116][117]
3.3.22016-10-31Sincere Pumpkin Patch[118][119]
3.3.12016-06-21Bug in Your Hair[120][121]
3.3.02016-05-03Supposedly Educational[122][123]
3.2.52016-04-11Very, Very Secure Dishes[124][125][126][127]
3.2.42016-03-11Very Secure Dishes[124][128]
3.2.32015-12-10Wooden Christmas-Tree찰리 브라운의 크리스마스 참조[129][130]
3.2.22015-08-14Fire Safety[131][132][133]
3.2.12015-06-18World-Famous Astronaut[134][135]
3.2.02015-04-16Full of Ingredients[136][137]
3.1.32015-03-09Smooth Sidewalk[138][139]
3.1.22014-10-31Pumpkin Helmet너는 좋은 운동가야, 찰리 브라운 참조[140]
3.1.12014-07-10Sock it to Me[141][142][143][144][145]
3.1.02014-04-10Spring Dance[96][146]
3.0.32014-03-06Warm Puppy[147][148]
3.0.22013-09-25Frisbee Sailing[149][150]
3.0.12013-05-16Good Sport[151][152]
3.0.02013-04-03Masked Marvel[153][154]
2.15.32013-03-01Security Blanket[155][156]
2.15.22012-10-26Trick or Treat[157][158]
2.15.12012-06-22Roasted Marshmallows[159][160]
2.15.02012-03-30Easter Beagle[161][162]
2.14.22012-02-29Gift-Getting Season부활절 비글이야, 찰리 브라운 참조[163][164]
2.14.12011-12-22December Snowflakes[165][166]
2.14.02011-10-31Great Pumpkin그레이트 펌킨, 찰리 브라운 참조[167][168]
r-develN/AUnsuffered Consequences[169][43]


참조

[1] 웹사이트 Introduction https://docs.juliala[...] 2018-08-05
[2] 웹사이트 Comparison with R https://pandas.pydat[...] 2024-07-15
[3] 논문 Evaluating the design of the R language: objects and functions for data analysis https://doi.org/10.1[...] 2016-05-17
[4] 웹사이트 R FAQ https://cran.r-proje[...] 2022-12-27
[5] 웹사이트 R scripts http://mercury.webst[...] 2021-07-17
[6] 웹사이트 R Data Format Family (.rdata, .rda) https://www.loc.gov/[...] 2021-07-17
[7] 논문 The R Language: An Engine for Bioinformatics and Data Science 2022-04-27
[8] 웹사이트 R - Free Software Directory https://directory.fs[...] 2024-01-26
[9] 웹사이트 The R Project: A Brief History and Thoughts About the Future https://www.stat.auc[...] 2022-12-27
[10] 웹사이트 R FAQ https://cran.r-proje[...] 2022-12-28
[11] 웹사이트 Index of /datasets https://lib.stat.cmu[...] 2024-09-05
[12] 웹사이트 R: Past and Future History https://www.stat.auc[...] 2022-12-28
[13] 웹사이트 New R Version for Unix https://stat.ethz.ch[...] 2023-02-12
[14] 웹사이트 The R Project: A Brief History and Thoughts About the Future https://www.stat.auc[...] 2022-12-27
[15] 서적 R for Data Science, Second Edition O'Reilly
[16] 웹사이트 Quarto https://quarto.org/ 2024-09-05
[17] 논문 S, R, and Data Science https://journal.r-pr[...] 2020
[18] 서적 The Book of R: A First Course in Programming and Statistics No Starch Press
[19] 논문 The Comprehensive R Archive Network https://onlinelibrar[...] 2012
[20] 문서 Q101068595
[21] 웹사이트 The Status of CRAN Mirrors https://cran.r-proje[...] 2024-10-16
[22] 웹사이트 CRAN - Contributed Packages https://cran.r-proje[...] 2024-10-16
[23] 웹사이트 R-Forge: Welcome https://r-forge.r-pr[...] 2024-09-05
[24] 웹사이트 The Omega Project for Statistical Computing https://www.omegahat[...] 2024-09-05
[25] 웹사이트 Build software better, together https://github.com/t[...] 2024-09-05
[26] 간행물 Tidy Data https://vita.had.co.[...] 2014
[27] 서적 R for Data Science, Second Edition O'Reilly
[28] 웹사이트 R for macOS https://cran.r-proje[...] 2024-09-05
[29] 웹사이트 IDE/Editor para Linguagem R {{!}} Tinn-R - Home https://tinn-r.org/e[...] 2024-09-05
[30] 서적 Proceedings of the 21st international conference on Parallel architectures and compilation techniques ACM 2012-01-01
[31] 뉴스 TIBCO offers free R to the enterprise http://www.pcworld.c[...] PC World 2013-05-16
[32] 웹사이트 Looking to the future for R in Azure SQL and SQL Server https://cloudblogs.m[...] 2021-11-07
[33] 웹사이트 An Introduction to R. Notes on R: A Programming Environment for Data Analysis and Graphics https://cran.r-proje[...] 2021-01-03
[34] 웹사이트 Assignments with the = Operator https://developer.r-[...] 2018-09-11
[35] 웹사이트 Quick-R: User-Defined Functions http://www.statmetho[...] 2018-09-28
[36] 웹사이트 Advanced R - Functional programming - Closures http://adv-r.had.co.[...]
[37] 웹사이트 NEWS https://cran.r-proje[...]
[38] 웹사이트 R: R News https://cran.r-proje[...] 2024-03-14
[39] 웹사이트 Class Methods https://stat.ethz.ch[...] 2024-04-25
[40] 서적 Chapter 5 R Release Names {{!}} Data Science with R: A Resource Compendium https://bookdown.org[...]
[41] 웹사이트 R release names https://livefreeordi[...] 2017-09-28
[42] 간행물 r-hub/rversions https://github.com/r[...] The R-hub project of the R Consortium 2024-04-07
[43] 웹사이트 What's in a name? 20 years of R release management https://www.youtube.[...] 2024-04-09
[44] 웹사이트 Race for Your Life, Charlie Brown https://www.imdb.com[...] 2024-06-18
[45] 웹사이트 R 4.4.1 is released https://stat.ethz.ch[...] 2024-06-18
[46] 웹사이트 Peanuts by Charles Schulz for June 29, 1980 {{!}} GoComics.com https://www.gocomics[...] 2024-04-24
[47] 웹사이트 R 4.4.0 is released https://stat.ethz.ch[...] 2024-04-24
[48] 웹사이트 Peanuts by Charles Schulz for June 29, 1980 {{!}} GoComics.com https://www.gocomics[...] 2024-04-09
[49] 웹사이트 R 4.3.3 is released https://hypatia.math[...] 2024-04-07
[50] 웹사이트 Peanuts by Charles Schulz for October 31, 1996 {{!}} GoComics.com https://www.gocomics[...] 2024-04-09
[51] 웹사이트 "[Rd] R 4.3.2 is released" https://stat.ethz.ch[...] 2024-04-07
[52] 웹사이트 Peanuts by Charles Schulz for April 28, 1979 {{!}} GoComics.com https://www.gocomics[...] 2024-04-09
[53] 웹사이트 "[Rd] R 4.3.1 is released" https://stat.ethz.ch[...] 2024-04-07
[54] 웹사이트 Peanuts by Charles Schulz for June 13, 1980 {{!}} GoComics.com https://www.gocomics[...] 2024-04-09
[55] 웹사이트 Peanuts by Charles Schulz for June 16, 1980 {{!}} GoComics.com https://www.gocomics[...] 2024-04-09
[56] 웹사이트 Peanuts by Charles Schulz for November 26, 1964 {{!}} GoComics.com https://www.gocomics[...] 2024-04-09
[57] 웹사이트 "[Rd] R 4.3.0 is released" https://stat.ethz.ch[...] 2024-04-07
[58] 웹사이트 Peanuts by Charles Schulz for March 30, 2001 {{!}} GoComics.com https://www.gocomics[...] 2024-04-09
[59] 웹사이트 "[Rd] R 4.2.3 is released" https://stat.ethz.ch[...] 2024-04-07
[60] 웹사이트 Peanuts by Charles Schulz for October 30, 1962 {{!}} GoComics.com https://www.gocomics[...] 2024-04-09
[61] 웹사이트 "[Rd] R 4.2.2 is released" https://stat.ethz.ch[...] 2024-04-07
[62] 웹사이트 Peanuts by Charles Schulz for November 22, 1970 {{!}} GoComics.com https://www.gocomics[...] 2024-04-09
[63] 웹사이트 Peanuts by Charles Schulz for July 29, 1971 {{!}} GoComics.com https://www.gocomics[...] 2024-04-09
[64] 웹사이트 Peanuts by Charles Schulz for September 25, 1969 {{!}} GoComics.com https://www.gocomics[...] 2024-04-09
[65] 웹사이트 Peanuts by Charles Schulz for October 13, 1973 {{!}} GoComics.com https://www.gocomics[...] 2024-04-09
[66] 웹사이트 Peanuts by Charles Schulz for February 08, 1974 {{!}} GoComics.com https://www.gocomics[...] 2024-04-09
[67] 웹사이트 Peanuts by Charles Schulz for January 08, 1970 {{!}} GoComics.com https://www.gocomics[...] 2024-04-09
[68] 웹사이트 "[Rd] R 4.2.1 is released" https://stat.ethz.ch[...] 2024-04-07
[69] 웹사이트 Peanuts by Charles Schulz for March 06, 1967 {{!}} GoComics.com https://www.gocomics[...] 2024-04-09
[70] 웹사이트 "[Rd] R 4.2.0 is released" https://stat.ethz.ch[...] 2024-04-07
[71] 웹사이트 '[Rd] R 4.1.2 is released' https://hypatia.math[...] 2024-04-07
[72] 웹사이트 'Peanuts by Charles Schulz for November 01, 1967 {{!}} GoComics.com' https://www.gocomics[...] 1967-11-01
[73] 웹사이트 'Peanuts by Charles Schulz for July 12, 1967 {{!}} GoComics.com' https://www.gocomics[...] 1967-07-12
[74] 웹사이트 'Peanuts by Charles Schulz for May 17, 1978 {{!}} GoComics.com' https://www.gocomics[...] 1978-05-17
[75] 웹사이트 '[Rd] R 4.1.1 is released' https://hypatia.math[...] 2024-04-07
[76] 웹사이트 'Peanuts by Charles Schulz for February 12, 1986 {{!}} GoComics.com' https://www.gocomics[...] 1986-02-12
[77] 웹사이트 '[Rd] R 4.1.0 is released' https://hypatia.math[...] 2024-04-07
[78] 웹사이트 'Peanuts by Charles Schulz for July 30, 1978 {{!}} GoComics.com' https://www.gocomics[...] 1978-07-30
[79] 웹사이트 '[Rd] R 4.0.5 is released' https://hypatia.math[...] 2024-04-07
[80] 웹사이트 'Peanuts by Charles Schulz for March 02, 1959 {{!}} GoComics.com' https://www.gocomics[...] 1959-03-02
[81] 웹사이트 'Peanuts by Charles Schulz for February 27, 2006 {{!}} GoComics.com' https://www.gocomics[...] 2006-02-27
[82] 웹사이트 'Peanuts by Charles Schulz for March 13, 1959 {{!}} GoComics.com' https://www.gocomics[...] 1959-03-13
[83] 웹사이트 '[Rd] R 4.0.4 scheduled for February 15' https://hypatia.math[...] 2024-04-07
[84] 웹사이트 'Peanuts by Charles Schulz for October 23, 1972 {{!}} GoComics.com' https://www.gocomics[...] 1972-10-23
[85] 웹사이트 '[Rd] R 4.0.3 is released' https://stat.ethz.ch[...] 2024-04-07
[86] 웹사이트 'Peanuts by Charles Schulz for April 14, 1962 {{!}} GoComics.com' https://www.gocomics[...] 1962-04-14
[87] 웹사이트 R 4.0.2 is released https://hypatia.math[...] 2024-04-07
[88] 웹사이트 'Peanuts by Charles Schulz for February 06, 1962 {{!}} GoComics.com' https://www.gocomics[...] 1962-02-06
[89] 웹사이트 R 4.0.1 is released https://hypatia.math[...] 2024-04-07
[90] 웹사이트 'Peanuts by Charles Schulz for April 24, 1970 {{!}} GoComics.com' https://www.gocomics[...] 1970-04-24
[91] 웹사이트 R 4.0.0 is released https://hypatia.math[...] 2024-04-07
[92] 웹사이트 'Peanuts by Charles Schulz for February 29, 2000 {{!}} GoComics.com' https://www.gocomics[...] 2000-02-29
[93] 웹사이트 R 3.6.3 is released https://hypatia.math[...] 2024-04-07
[94] 웹사이트 'Peanuts by Charles Schulz for July 12, 1965 {{!}} GoComics.com' https://www.gocomics[...] 1965-07-12
[95] 웹사이트 R 3.6.2 is released https://hypatia.math[...] 2024-04-07
[96] 웹사이트 'Peanuts by Charles Schulz for March 22, 1971 {{!}} GoComics.com' https://www.gocomics[...] 1971-03-22
[97] 웹사이트 R 3.6.1 is released https://hypatia.math[...] 2024-04-07
[98] 웹사이트 'Peanuts by Charles Schulz for March 03, 1963 {{!}} GoComics.com' https://www.gocomics[...] 1963-03-03
[99] 웹사이트 R 3.6.0 is released https://hypatia.math[...] 2024-04-07
[100] 웹사이트 'Peanuts by Charles Schulz for March 11, 1959 {{!}} GoComics.com' https://www.gocomics[...] 1959-03-11
[101] 웹사이트 R 3.5.3 is released https://stat.ethz.ch[...] 2024-04-07
[102] 웹사이트 'Peanuts by Charles Schulz for January 25, 1960 {{!}} GoComics.com' https://www.gocomics[...] 1960-01-25
[103] 웹사이트 R 3.5.2 is released https://stat.ethz.ch[...] 2024-04-07
[104] 웹사이트 'Peanuts by Charles Schulz for March 09, 1972 {{!}} GoComics.com' https://www.gocomics[...] 1972-03-09
[105] 웹사이트 R 3.5.1 is released https://stat.ethz.ch[...] 2024-04-07
[106] 웹사이트 Peanuts by Charles Schulz for January 27, 1973 {{!}} GoComics.com https://www.gocomics[...] 1973-01-27
[107] 웹사이트 R 3.5.0 is released https://hypatia.math[...] 2024-04-07
[108] 이미지 https://collectpeanu[...] 2024-08
[109] 웹사이트 R 3.4.4 is released https://hypatia.math[...] 2024-04-07
[110] 웹사이트 Peanuts by Charles Schulz for February 19, 1967 {{!}} GoComics.com https://www.gocomics[...] 1967-02-19
[111] 웹사이트 R 3.4.3 is released https://hypatia.math[...] 2024-04-07
[112] 웹사이트 R 3.4.2 is released https://hypatia.math[...] 2024-04-07
[113] 웹사이트 Peanuts by Charles Schulz for September 09, 1965 {{!}} GoComics.com https://www.gocomics[...] 1965-09-09
[114] 웹사이트 R 3.4.1 is released https://hypatia.math[...] 2024-04-07
[115] 웹사이트 R 3.4.0 is released https://stat.ethz.ch[...] 2024-04-07
[116] 웹사이트 Peanuts by Charles Schulz for June 29, 1966 {{!}} GoComics.com https://www.gocomics[...] 1966-06-29
[117] 웹사이트 '[R] R 3.3.3 is released' https://stat.ethz.ch[...] 2024-04-07
[118] 웹사이트 Peanuts by Charles Schulz for October 30, 1968 {{!}} GoComics.com https://www.gocomics[...] 1968-10-30
[119] 웹사이트 '[R] R 3.3.2 is released' https://stat.ethz.ch[...] 2024-04-07
[120] 웹사이트 Peanuts by Charles Schulz for June 15, 1967 {{!}} GoComics.com https://www.gocomics[...] 1967-06-15
[121] 웹사이트 '[R] R 3.3.1 is released' https://stat.ethz.ch[...] 2024-04-07
[122] 웹사이트 Peanuts by Charles Schulz for May 07, 1971 {{!}} GoComics.com https://www.gocomics[...] 1971-05-07
[123] 웹사이트 '[R] R 3.3.0 is released' https://stat.ethz.ch[...] 2024-04-07
[124] 웹사이트 Peanuts by Charles Schulz for February 20, 1964 {{!}} GoComics.com https://www.gocomics[...] 1964-02-20
[125] 웹사이트 VERSION-NICK https://svn.r-projec[...] 2024-04-07
[126] 웹사이트 R 3.2.5 is released https://stat.ethz.ch[...] 2024-04-07
[127] 웹사이트 R 3.2.4-revised is released https://stat.ethz.ch[...] 2024-04-07
[128] 웹사이트 R 3.2.4 is released https://stat.ethz.ch[...] 2024-04-07
[129] 웹사이트 Peanuts by Charles Schulz for December 18, 1980 {{!}} GoComics.com https://www.gocomics[...] 1980-12-18
[130] 웹사이트 R 3.2.3 is released https://stat.ethz.ch[...] 2024-04-07
[131] 웹사이트 METLIFE : Brush Up on Fire Safety Basics -October 07, 2008 at 04:03 pm EDT {{!}} MarketScreener https://www.marketsc[...] 2008-10-07
[132] 웹사이트 MetLife Advises People to Brush Up on Fire Safety Basics to Stay Safe https://www.claimsjo[...] 2005-10-12
[133] 웹사이트 R 3.2.2 is released https://stat.ethz.ch[...] 2024-04-07
[134] 웹사이트 Peanuts by Charles Schulz for March 10, 1969 {{!}} GoComics.com https://www.gocomics[...] 1969-03-10
[135] 웹사이트 '[R] R 3.2.1 liftoff' https://stat.ethz.ch[...] 2024-04-07
[136] 웹사이트 Peanuts by Charles Schulz for April 07, 1966 {{!}} GoComics.com https://www.gocomics[...] 1966-04-07
[137] 웹사이트 '[R] R 3.2.0 is released' https://stat.ethz.ch[...] 2024-04-07
[138] 서적 Happiness is a warm puppy New York : Penguin Workshop 2019
[139] 웹사이트 R 3.1.3 is released https://stat.ethz.ch[...] 2024-04-07
[140] 웹사이트 '[R] R 3.1.2 is released' https://stat.ethz.ch[...] 2024-04-07
[141] 이미지 https://i.ebayimg.co[...] 2024-08
[142] 이미지 https://cdn11.bigcom[...] 2024-08
[143] 이미지 https://i.etsystatic[...] 2024-08
[144] 웹사이트 Peanuts Springbok Puzzles https://collectpeanu[...]
[145] 웹사이트 '[R] R 3.1.1 is released' https://stat.ethz.ch[...] 2024-04-07
[146] 웹사이트 '[R] R 3.1.0 is released' https://stat.ethz.ch[...] 2024-04-07
[147] 웹사이트 'Peanuts by Charles Schulz for January 11, 1965 {{!}} GoComics.com' https://www.gocomics[...] 1965-01-11
[148] 웹사이트 R 3.0.3 is released https://stat.ethz.ch[...] 2024-04-07
[149] 웹사이트 'Peanuts by Charles Schulz for September 03, 1971 {{!}} GoComics.com' https://www.gocomics[...] 1971-09-03
[150] 웹사이트 R 3.0.2 is released https://stat.ethz.ch[...] 2024-04-07
[151] 웹사이트 'Peanuts by Charles Schulz for November 22, 1953 {{!}} GoComics.com' https://www.gocomics[...] 1953-11-22
[152] 웹사이트 R 3.0.1 is released https://stat.ethz.ch[...] 2024-04-07
[153] 웹사이트 'Peanuts by Charles Schulz for June 23, 1981 {{!}} GoComics.com' https://www.gocomics[...] 1981-06-23
[154] 웹사이트 R 3.0.0 is released https://stat.ethz.ch[...] 2024-04-07
[155] 웹사이트 'Peanuts by Charles Schulz for October 23, 1965 {{!}} GoComics.com' https://www.gocomics[...] 1965-10-23
[156] 웹사이트 R 2.15.3 is released https://stat.ethz.ch[...] 2024-04-07
[157] 웹사이트 'Peanuts by Charles Schulz for October 31, 1969 {{!}} GoComics.com' https://www.gocomics[...] 1969-10-31
[158] 웹사이트 R 2.15.2 is released https://stat.ethz.ch[...] 2024-04-07
[159] 웹사이트 'Peanuts by Charles Schulz for June 06, 1987 {{!}} GoComics.com' https://www.gocomics[...] 1987-06-06
[160] 웹사이트 R 2.15.1 is released https://stat.ethz.ch[...] 2024-04-07
[161] 웹사이트 'Peanuts by Charles Schulz for April 11, 1971 {{!}} GoComics.com' https://www.gocomics[...] 1971-04-11
[162] 웹사이트 R 2.15.0 is released https://stat.ethz.ch[...] 2024-04-07
[163] AV media 'It''s the Easter Beagle, Charlie Brown! (TV Short 1974) - Quotes - IMDb' https://www.imdb.com[...] 2024-04-08
[164] 웹사이트 R 2.14.2 is released + R anniversary https://stat.ethz.ch[...] 2024-04-07
[165] 웹사이트 Our Favorite Quotes and Sayings from "A Charlie Brown Christmas" https://www.southern[...] 2023-01-20
[166] 웹사이트 R 2.14.1 is released https://stat.ethz.ch[...] 2024-04-07
[167] 웹사이트 'Peanuts by Charles Schulz for October 29, 1973 {{!}} GoComics.com' https://www.gocomics[...] 1973-10-29
[168] 웹사이트 R 2.14.0 is released https://stat.ethz.ch[...] 2024-04-07
[169] 웹사이트 'Peanuts by Charles Schulz for August 17, 1967 {{!}} GoComics.com' https://www.gocomics[...] 1967-08-17
[170] 문서 R Project Contributors http://www.r-project[...]
[171] 문서 GNU R http://directory.fsf[...]
[172] 문서 S言語は1998年にAssociation for Computing Machinery|ACMのACMソフトウェアシステム賞|ソフトウェアシステム賞を獲得した。
[173] 문서 簡略化のために、円の直交座標系#平面上の直交座標系|第一象限でカウントして4倍する方法をとる。
[174] 문서 Rにおける確率分布 http://www.okadajp.o[...]
[175] 문서 Rがインポート・エクスポートできるデータ形式 http://www.okada.jp.[...]
[176] 웹사이트 CRANパッケージリスト http://www.okada.jp.[...]
[177] 웹사이트 CRAN国内ミラーの使い方 http://www.okada.jp.[...]
[178] 웹사이트 Julia Micro-Benchmarks https://www.julialan[...] null 2020-01-24
[179] 웹사이트 Microbenchmarks/perf.R at master · JuliaLang/Microbenchmarks · GitHub https://github.com/J[...] null 2020-01-24
[180] 웹사이트 GitHub - JuliaLang/Microbenchmarks: Micro benchmark comparison of Julia against other languages https://github.com/J[...] null 2020-01-24
[181] 웹사이트 RとFDA http://www.okadajp.o[...]
[182] 웹사이트 IBM RユーザーのためのIBM SPSS Statistics Developer http://www-06.ibm.co[...]
[183] 웹사이트 R Interface Now Available in SAS/IML Studio http://support.sas.c[...]
[184] 웹인용 Individual Expertise profile of Robert Gentleman http://myprofile.cos[...] 2006-12-09
[185] Q인용 Q56268347, cited from Q101068131, section 2.4.
[186] 저널 R generation 2018-08
[187] 서적 The R FAQ: Why R? https://cran.r-proje[...] 2008-01-29
[188] 참고 R version history- R 2.14 2011-10-31 Added mandatory namespaces for packages. Added a new parallel package.
[189] 참고 (Ubuntu Packahges For R - Brief Instructions) https://cran.usthb.d[...]
[190] 참고 (Quick Intro to Parallel Computing in R,Matt Jones,7/25/2017) https://nceas.github[...]
[191] 저널 Rcpp : Seamless R and C++ Integration http://www.jstatsoft[...] 2011
[192] 웹인용 nuiton / nuiton-j2r https://gitlab.nuito[...] 2019-03-28
[193] 웹인용 Making GUIs using C# and R with the help of R.NET https://psychwire.wo[...] 2019-03-28
[194] 저널 CRAN Task View: Graphic Displays & Dynamic Graphics & Graphic Devices & Visualization https://cran.r-proje[...] 2015-01-07
[195] 참고 R for Data Science ,Hadley Wickham, Garrett Grolemund,R4DS,CCL3 - R Markdown formats https://r4ds.had.co.[...]
[196] 웹사이트 R , Rd format- http://www.hep.by/gn[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com