R 언어 정의: 소개
R 언어 정의: 소개
R 언어 정의 매뉴얼의 서론 부분이에요. R이 어떤 시스템인지, 이 매뉴얼의 목적과 다루는 범위를 간단히 설명해요.
출처: 문서
본문
1 소개
R은 통계 계산과 그래픽을 위한 시스템이에요. 무엇보다도 프로그래밍 언어, 고수준 그래픽, 다른 언어와의 인터페이스, 디버깅 기능을 제공해요. 이 매뉴얼은 R 언어를 자세히 기술하고 정의해요.
R 언어는 1980년대에 설계된 S의 한 방언(dialect)으로, 그 이후 통계 커뮤니티에서 널리 사용되어 왔어요. 주 설계자인 John M. Chambers는 S에 기여한 공로로 1998년 ACM 소프트웨어 시스템 상을 수상했어요.
언어 구문은 C와 겉보기에는 비슷하지만, 의미론(semantics)은 FPL(함수형 프로그래밍 언어) 계열에 속하며 Lisp 및 APL과 더 깊은 관련이 있어요. 특히 “언어에 대한 계산(computing on the language)”을 허용해서, 표현식을 입력으로 받는 함수를 작성할 수 있어요. 이는 통계 모델링과 그래픽에서 자주 유용하게 쓰여요.
R을 대화형(interactive)으로 사용하면서 명령줄에서 간단한 표현식을 실행하는 것만으로도 꽤 많은 작업을 할 수 있어요. 어떤 사용자는 그 수준을 넘어설 필요가 전혀 없을 수도 있고, 다른 사용자는 반복 작업을 체계화하기 위해 임시방편으로 자신만의 함수를 쓰거나, 새로운 기능을 위한 추가 패키지를 작성하려고 할 수도 있어요.
이 매뉴얼의 목적은 언어 그 자체를 문서화하는 것이에요. 즉, R이 다루는 객체(object)와 표현식 평가 과정의 세부 사항을 다루며, 이는 R 함수를 프로그래밍할 때 알아두면 유용해요. 그래픽 같은 특정 작업을 위한 주요 하위 시스템은 이 매뉴얼에서 간략하게만 설명하고, 별도로 문서화할 예정이에요.
본문의 상당 부분은 S에도 동일하게 적용되지만, 상당한 차이점도 있기 때문에 혼동을 피하기 위해 R을 중심으로 설명할게요.
언어 설계에는 사용자를 놀라게 할 만한 미묘한 점과 흔한 함정이 많이 있어요. 대부분은 더 깊은 수준에서의 일관성(consistency) 고려 때문에 발생해요. 또 매우 복잡한 연산을 간결하게 표현할 수 있는 유용한 지름길과 관용 표현(idiom)도 많이 있어요. 이 중 많은 것은 기저 개념에 익숙해지면 자연스러워져요. 어떤 경우에는 작업을 수행하는 방법이 여러 가지인데, 어떤 기법은 언어 구현에 의존하고 다른 기법은 더 높은 추상화 수준에서 작동해요. 이런 경우에는 선호하는 사용법을 알려줄게요.
R에 대한 어느 정도의 친숙함은 전제로 해요. 이 매뉴얼은 R 입문서가 아니라 프로그래머를 위한 참조 매뉴얼이에요. 다른 매뉴얼이 보완 정보를 제공해요. 특히 An Introduction to R은 R 입문을 다루고, Writing R Extensions의 "System and foreign language interfaces" 장에서는 컴파일된 코드로 R을 확장하는 방법을 자세히 설명해요.