Page 25 -
P. 25
[1] "1" "2" "3"
> as.character(c(TRUE, FALSE))
[1] "TRUE" "FALSE"
각 타입의 벡터는 어떻게든 다른 모든 타입의 벡터로 변환할 수 있다. 모든 변환은 일련의 규칙을 2
따른다.
바로 앞 코드의 블록에서 첫 번째 줄은 앞 예제와 마찬가지로 문자형 벡터를 수치형 벡터로 변환 기본 객체 알아보기
하는 것이다. 분명 마지막 요소인 a는 숫자로 변환할 수 없다. 따라서 마지막 요소를 제외하고 변
환하므로 결측 값이 생성된다.
수치형 벡터를 논리형 벡터로 변환할 때 0은 FALSE에 해당하고, 0이 아닌 모든 숫자는 TRUE가 된다.
어떤 타입이든 문자로 표현할 수 있어 모든 벡터는 문자형 벡터로 변환할 수 있다. 하지만 수치형
벡터 혹은 논리형 벡터를 문자형 벡터로 강제 변환하면 다시 원래대로 변환하지 않는 이상, 다른
수치형 혹은 논리형 벡터와는 직접 산술 연산을 할 수 없다. 이것이 바로 다음 코드가 동작하지 않
는 이유다.
> c(2, 3) + as.character(c(1, 2))
Error in c(2, 3) + as.character(c(1, 2)) :
non-numeric argument to binary operator
앞서 소개한 예제들에서 알 수 있듯이, R은 입력 규칙이 엄격하지는 않지만 그렇다고 R이 자동으
로 사용자가 원하는 대로 정확하게 변환을 수행할 수 있는 것도 아니다. 대부분은 올바르게 계산
할 수 있도록 벡터 타입이 맞는지 먼저 확인하는 것이 바람직하다. 그렇지 않으면 예기치 않은 오
류가 발생할 수 있다. 즉, 데이터 객체 타입이 정확해야 올바른 연산을 보장한다.
2.1.9 수치형 벡터의 산술 연산
수치형 벡터의 산술 연산은 정말 간단하다. 기본적으로 다음 두 가지 규칙을 따른다. 요소별 방식
으로 연산을 수행한다는 것과 길이가 짧은 벡터를 재활용한다는 것이다. 다음 코드는 수치형 벡터
를 사용하여 연산자가 어떻게 동작하는지 보여 준다.
> c(1, 2, 3, 4) + 2
[1] 3 4 5 6
> c(1, 2, 3) - c(2, 3, 4)
[1] -1 -1 -1
59
r교과서_07.indd 59 2020-04-09 오후 4:21:24