26 소개
이번 파트에서 우리는 프로그래밍 능력을 향상시킬 것이다. 프로그래밍은 데이터 과학 실무 전반에 필수적으로 필요한 핵심 역량이다. 데이터 과학은 머릿속에서만 수행하거나 연필과 종이로만 할 수는 없다. 반드시 컴퓨터를 사용해서 수행해야 한다.
프로그래밍을 하면 코드가 생성되는데, 코드는 의사소통 도구이다. 물론, 코드는 사람이 무엇을 원하는지 컴퓨터에게 알려준다. 하지만 코드는 그 의미를 다른 사람에게 전달하기도 한다. 모든 프로젝트는 기본적으로 협업이기 때문에, 코드를 의사소통의 운송수단으로 여기는 것은 중요하다. 다른 사람과 협업을 하고 있지 않더라도, 여러분은 반드시 미래의 자신(!)과 일하게 될 것이다! (미래의 자신을 포함한) 다른 사람이, 여러분이 수행한 분석방법을 이해할 수 있게, 코드를 명확하게 작성하는 것은 매우 중요하다. 따라서, 프로그래밍을 잘하는 것은 소통을 잘하는 것과도 연관되어 있다. 우리 모두는 시간이 지날수록 자신의 코드가 작성하기 쉬울 뿐만 아니라, 다른 사람이 읽기에도 쉽기를 바라게 될 것이다.
코드를 작성하는 것은 글을 쓰는 것과 여러 면에서 유사하다. 내가 발견한, 매우 유용하다고 생각하는 유사점은 두 경우 모두 의미를 명확하게 하기 위해서 다시쓰기가 핵심이라는 것이다. 아이디어를 처음으로 작성하면 명확하지 않아 여러 번 다시 써야 할 수도 있다. 데이터 분석 문제를 해결한 후, 코드를 보고, 여러분이 한 것이 명확한지 아닌지 생각해볼 필요가 있다. 아이디어가 생생할 동안 코드를 다시 작성하는 데 시간을 조금 투자하면 나중에 코드를 다시 작성하는 시간을 크게 절약할 수 있다. 그러나 모든 함수를 다시 써야 한다는 말은 아니다. 지금 집중해야 하는 것과 장기적으로 시간을 절약하는 것 사이에 균형을 맞추어야 한다. (함수 다시쓰기를 자주 하면 할수록 다음에는 처음부터 점차 더 명확하게 작성하게 될 것이다.)
다음 네 장에 걸쳐 새로운 프로그램을 공략하고 기존 문제를 더 명확하고 쉽게 해결할 수 있는 기술을 배워보자.
1· ?? 장에서는 파이프, 즉 %>%
에 대해 깊이 들어가서, 어떻게 작동하는지, 대안은 무엇인지, 언제 사용하지 않아야 하는지에 대해 배울 것이다.
2· 복사하여 붙여넣기는 강력한 도구이지만 두 번 이상 사용하는 것은 피해야 한다. 코드를 수동으로 반복하면 오류와 불일치가 쉽게 발생할 수 있기 때문에 위험하다. 대신 27 장에서 함수 작성하는 법을 배울 것인데, 이를 이용하여 반복 코드를 추출하여 쉽게 재사용할 수 있게 될 것이다.
3· 더 강력한 함수를 작성하려면 28 장에서 살펴볼, R 의 __데이터 구조__에 관한 기초를 탄탄하게 다져야 한다. 일반적 원자 벡터 네 개와 이를 기반으로 만들어진 세 개의 중요 S3 클래스를 익히고 리스트와 데이터프레임의 미묘한 차이를 이해해야 한다.
4· 반복되는 코드는 함수를 이용하여 추출되지만 종종 입력을 달리하며 같은 작업을 반복해야 할 일이 생긴다. 유사한 작업을 계속 반복할 수 있도록 하는 반복(iteration) 도구가 필요하다. 반복 도구로는 for 루프와 함수형 프로그래밍이 있는데 ?? 장에서 살펴볼 것이다.
26.1 더 배우기
이 장들의 목표는 데이터 과학을 실제 적용하기에 필요한 최소 범위의 프로그래밍을 배우는 것이다. 분량이 적절함을 알 수 있을 것이다. 이 책의 내용을 모두 배운 뒤에도 프로그래밍 실력 강화에 계속 투자해야 한다는 것이 내 신념이다. 프로그래밍에 대해 배우는 것은 장기 투자로 보아야 한다. 즉각 보상받지는 못하겠지만 장기적으로는 새로운 문제를 훨씬 신속하게 풀 수 있게 되고, 이전 문제에서 얻은 아이디어를 새로운 시나리오에 재사용할 수 있게 될 것이다.
이후로 더 배우려면 R 을 프로그래밍 언어로 학습할 필요가 있다. R 을 그저 데이터 과학을 위한 대화형 환경으로 학습하는 것으로는 부족하다. 우리는 이를 도와줄 책 두 권을 저술했다.
Hands on Programming with R (개럿 그롤문드 저) 이 책은 R 을 프로그래밍 언어로 살펴보는 입문서인데 R 이 첫 번째 프로그래밍 언어인 사람이 처음으로 보기 좋은 책이다. 다음 장들과 유사한 내용이 포함되어 있지만 스타일이 다 르고, 다른 예(카지노 내용)를 사용하여 동기부여를 한다. 다음의 네 장이 너무 빨리 진행되는 것 같은 사람이 보충할 수 있는 책이다.
Advanced R (해들리 위컴 저) 이 책은 프로그래밍 언어로서 R 의 세부사항을 파고든다. 기존 프로그래밍 경험이 있는 사람은 이 책부터 읽어보는 것이 좋다. 다음 장들의 내용을 체득한 뒤, 그 다음 단계로 보기에 적합한 책이기도 하다. 온라인http://adv-r.had.co.nz으로 읽을 수 있다.