더북(TheBook)

01 | R의 특징

R 프로그래밍은 다른 언어와 상당히 유사해 예시 코드를 참조하면 쉽게 프로그래밍 방법을 배울 수 있다. 그러나 R에는 다른 언어와 몇 가지 특징적인 차이점이 있어 이들을 잘 이해할 필요가 있다.

첫째는 데이터를 다루는 방법이다. 다른 프로그래밍 언어에서는 흔히 for 문을 사용해 데이터를 한 행씩 읽어들여 처리한다. 하지만 R에서는 전체 데이터를 한 번에 다루는 벡터 연산을 더 자주 사용한다. 예를 들어, 학생 데이터의 평균을 구할 때 다른 프로그래밍 언어에서는 각 행을 읽어들여 sum이라는 변수에 값을 더한 뒤, 전체 행의 수로 나눈다. 하지만 R에서는 데이터 전체의 평균을 구하는 mean( ) 함수를 사용해 한 번에 처리한다. 이러한 차이는 단지 코딩 스타일이나 철학의 차이에 그치지 않고 프로그램의 속도에도 영향을 미친다. 다수의 데이터를 한 번에 다루는 함수 또는 명령이 개별 데이터를 하나하나 처리하는 방법에 비해 속도가 빠르다.

둘째는 결측치NA다. R에는 초기화되지 않은 변수에 저장하는 NULL 외에도 관측 또는 기록되지 않은 데이터를 표시하기 위한 NA가 있다. 따라서 코드에서 NA를 제대로 구분해서 처리하지 않으면 원하는 결과를 얻지 못할 수도 있다. 이는 다른 언어에서 NULL과 비교해볼 수 있다. 대부분의 프로그래밍 언어에서 NULL이 저장될 수 있는 변수를 다룰 때는 항상 변수를 사용하기에 앞서 혹시 NULL이 저장되어 있는지 확인한 뒤 다른 작업을 수행해야 하며, 그렇지 않으면 에러가 발생할 수 있다. 또 NULL이 저장된 변수가 포함된 연산을 수행할 때 NULL AND TRUE가 NULL, NULL AND FALSE가 NULL이 되는 경우 등이 있어 연산에서도 주의가 필요하다. R의 NA 역시 비슷한 고려가 필요하다.

셋째는 객체의 불변성이다. 대부분의 R 객체는 그 값을 수정할 수 없다. 따라서 문법적으로 객체의 데이터를 수정하고 있다고 보이는 코드에서도 실제로는 해당 부분의 값이 수정된 새로운 객체가 생성된다.

이 장에서는 R 프로그래밍의 기본적인 요소인 제어문, 반복문, 연산, 함수를 살펴보고 방금 설명한 차이점에 대해서도 알아보도록 한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.