R Language Definition - 상수(Constants)

R Language Definition - 상수(Constants)

R에서 리터럴 상수는 정수, 논리, 숫자, 복소수, 문자열 등 다양한 유형으로 표현돼요. 이 문서에서는 각 상수 유형의 문법과 특수 상수들에 대해 설명할게요.

출처: R Language Definition - Literal constants

본문

10.3.1 상수

상수에는 다섯 가지 유형이 있어요: 정수(integer), 논리(logical), 숫자(numeric), 복소수(complex), 문자열(string)입니다.
그 외에 특별한 상수로 NULL이 있어요.
또한 숫자형 InfNaN, 논리형 NA, 그리고 NA_character_, NA_integer_, NA_real_, NA_complex_도 언급할 만해요. 후자에 대해서는 NA 처리(NA handling)를 참조하세요.

NULL은 빈 객체를 나타내는 데 사용해요. NA는 결측(Not Available, ‘사용 불가’) 데이터 값을 나타내는 데 사용해요. Inf는 무한대를 뜻하고, NaN은 IEEE 부동소수점 계산에서 숫자가 아님(not-a-number)을 뜻해요 (예를 들어 각각 1/00/0 연산의 결과죠).

논리 상수는 TRUE, FALSE, NA 중 하나예요.

숫자 상수는 C 언어와 유사한 문법을 따라요. 숫자 상수는 0개 이상의 숫자로 이루어진 정수부, 그 뒤에 선택적으로 ‘.’과 0개 이상의 숫자로 된 소수부, 그리고 선택적으로 지수부(‘E’ 또는 ‘e’, 선택적 부호, 하나 이상의 숫자 문자열로 구성)로 이루어져 있어요. 소수부나 정수부 중 하나는 비어 있어도 되지만, 동시에 둘 다 비어 있을 수는 없어요.

Valid numeric constants: 1 10 0.1 .2 1e-7 1.2e+7

숫자 상수는 16진수일 수도 있는데, ‘0x’ 또는 ‘0X’로 시작하고 뒤에 0개 이상의 숫자, ‘a-f’ 또는 ‘A-F’가 따라와요.
16진수 부동소수점 상수는 C99 문법을 사용해 지원돼요. 예: ‘0x1.1p1’.

이제 정수 상수는 별도의 클래스로 존재해요. 숫자 끝에 L 한정자를 붙여 만들 수 있어요. 예를 들어 123L은 숫자형 값 대신 정수 값을 만들어요. L 접미사는 정수를 만들 목적으로 복소수가 아닌 모든 수에 사용할 수 있어요. 따라서 16진수 표기나 과학적 표기법으로 주어진 숫자에도 사용할 수 있어요. 다만 값이 유효한 정수가 아니면 경고가 발생하고 숫자형 값이 만들어져요. 다음은 유효한 정수 상수, 경고를 발생시키고 숫자형 상수를 주는 값, 그리고 문법 오류의 예시예요.

Valid integer constants:  1L, 0x10L, 1000000L, 1e6L
Valid numeric constants:  1.1L, 1e-3L, 0x1.1p-2
Syntax error:  12iL 0x1.1

불필요한 소수점을 포함한 십진수 값(예: 1.L)에는 경고가 발생해요. 16진수 상수에 이진 지수(binary exponent) 없이 소수점을 사용하면 오류예요.

또한 앞에 붙는 부호(+ 또는 -)는 상수의 일부가 아니라 단항 연산자로 처리된다는 점에 유의하세요.

현재 허용되는 형식에 대한 최신 정보는 ?NumericConstants로 확인할 수 있어요.

복소수 상수는 십진수 숫자 상수 뒤에 ‘i’가 붙는 형태예요. 순허수(purely imaginary number)만 실제 상수이고, 다른 복소수는 숫자와 허수에 대한 단항 또는 이항 연산으로 분석된다는 점에 유의하세요.

Valid complex constants: 2i 4.1i 1e-2i

문자열 상수는 작은따옴표(‘'’) 또는 큰따옴표(‘"’) 한 쌍으로 구분되며, 다른 모든 인쇄 가능한 문자를 포함할 수 있어요.
문자열 안의 따옴표와 기타 특수 문자는 *이스케이프 시퀀스(escape sequences)*로 지정해요:

이스케이프 시퀀스 의미
\' 작은따옴표
\" 큰따옴표
\n 줄바꿈 (일명 ‘line feed’, LF)
\r 캐리지 리턴 (CR)
\t 탭 문자
\b 백스페이스
\a
\f 폼 피드
\v 세로 탭
\\ 백슬래시 자체
\nnn 주어진 8진수 코드를 가진 문자 — 범위 0 ... 7의 한 자리, 두 자리 또는 세 자리 숫자 시퀀스가 허용돼요.
\xnn 주어진 16진수 코드를 가진 문자 — 한 자리 또는 두 자리 16진수 숫자(항목 0 ... 9 A ... F a ... f) 시퀀스예요.
\unnnn 또는 \u{nnnn} (멀티바이트 로케일이 지원되는 경우; 그렇지 않으면 오류) 주어진 16진수 코드를 가진 유니코드 문자 — 최대 네 자리 16진수 시퀀스예요. 문자는 현재 로케일에서 유효해야 해요.
\Unnnnnnnn 또는 \U{nnnnnnnn} (멀티바이트 로케일이 지원되는 경우; 그렇지 않으면 오류) 주어진 16진수 코드를 가진 유니코드 문자 — 최대 여덟 자리 16진수 시퀀스예요.

작은따옴표는 큰따옴표로 구분된 문자열 안에 직접 포함될 수도 있고, 그 반대도 가능해요.

NUL(\0)은 문자열에 허용되지 않아요. 따라서 문자열 상수에 \0을 사용하면 상수가 종료돼요(보통 경고와 함께요). 닫는 따옴표까지의 추가 문자는 스캔되지만 무시돼요.

더 알아보기 (Learn more)

출처: R Language Definition - 상수(Constants)