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
   20   21   22   23   24   25   26   27   28   29   30