모든 프로그래머는 불가피하게 일상 업무에 수많은 코드를 작성합니다. 그러나 모든 프로그래머가 다른 사람들이 쉽게 이해할 수있는 깨끗한 코드를 작성하는 습관을 갖지는 않습니다. 그 이유 중 하나는 프로그래머가 프로그램을 작성하는 데 따르는 모범 사례에 대한 인식 부족 때문일 수 있습니다. 초보자 개발자에게는 특히 그렇습니다. 이 글 에서는 코드 가독성, 일관성 및 반복성 향상으로 이어질 R 프로그래밍 우수 사례를 소개하고자 합니다.

R로 코딩하는 모범 사례

 

1) 코드에 대한 설명
코딩을 시작할 때 R 코드가 맨 처음 행에서 무엇을하는지 설명하십시오. 후속 코드 블록의 경우 블록을 설명하는 동일한 방법을 따릅니다. 이렇게하면 다른 사람들이 코드를 이해하고 사용하기가 쉬워집니다

 

2) 패키지 로드
첫 번째 줄에 코드를 설명하고 나면 라이브러리 함수를 사용하여 코드를 실행하는 데 필요한 모든 관련 R 패키지를 나열하고 로드 하십시오

 

3) 업데이트된 패키지를 사용 하세요
코딩하는 동안 최신 업데이트 된 R 패키지를 사용하고 있는지 확인하십시오. R 패키지의 버전을 확인하려면 packageVersion 함수를 사용할 수 있습니다.

 

4) 동일한 폴더에 모든 소스 파일 구성
사용될 모든 필요한 파일을 저장하세요. 각각의 상대 경로를 사용하여 액세스 할 수 있습니다.

 

5) 데이터 구조 유형에 일관된 스타일 사용 – R 프로그래밍 언어는 벡터, 요소, 데이터 프레임, 행렬 및 목록과 같은 다양한 데이터 구조를 허용합니다. 특정 유형의 데이터 구조에 대해 유사한 이름을 사용하십시오. 이렇게하면 코드에 사용 된 유사한 데이터 구조를 쉽게 인식하고 문제를 쉽게 찾아 낼 수 있습니다. 아래 코드와 같이 df를 접미사로 추가하여 코드에 사용 된 모든 다른 데이터 프레임의 이름을 지정할 수 있습니다.

 

6) 코드 들여쓰기 – 들여쓰기는 For 루프 및 If 문과 같이 여러 중첩 문이있는 경우 특히 코드를 읽기 쉽게 만듭니다.

 

7) 임시 객체 제거 – 긴 코드의 경우 수천 줄에서 실행 되므로 임시 객체가 코드에서 목적을 달성 한 후에 제거하는 것이 좋습니다. 이렇게하면 R에서 메모리 문제가되지 않도록 할 수 있습니다.

 

8) 코드 시간 측정 – system.time 함수를 사용하여 코드 시간을 측정 할 수 있습니다. 동일한 함수를 사용하여 다른 코드 블록에서 걸린 시간을 확인할 수도 있습니다. 이 함수는 표현식이나 코드 블록을 평가하는 데 걸리는 시간을 초 단위로 반환합니다. 타이밍 코드는 병목 현상을 파악하고 스크립트에서 필요한 변경을 수행하여 코드 속도를 높이는 데 도움이됩니다. 다른 블록에 걸린 시간을 찾으려면 system.time 함수를 호출 할 때 중괄호로 묶었습니다. 이 함수가 반환하는 두 가지 중요한 측정 항목은 다음과 같습니다.
i) 사용자 시간 – 코드에 대해 CPU에 청구 된 시간
ii) 경과 시간 – 코드를 전체적으로 실행하는 데 걸린 시간

 

9) 벡터화 사용 – 벡터화는 특히 대규모 데이터 세트를 처리 할 때 코드 실행 속도를 높입니다. 벡터화를 위해 ifelse 문이나 with 함수와 같은 명령문을 사용할 수 있습니다.
아래 코드는 NIFTY 1 년 가격대를 고려하고, (for-loop와 function을 사용하여) 두 가지 방법을 사용하여 매일 gap을 열어서 system.time 함수를 사용하여 시간 간격을 조정하십시오. for 루프를 실행하는 데 걸리는 시간 대 lagpad 기능과 함께 with 함수를 실행하는 데 걸리는 시간을 확인하십시오.

10) 폴딩 코드 – 폴딩 코드는 R 프로그래머가 코드의 줄 또는 코드 섹션을 폴드 할 수있는 방법입니다. 이를 통해 필요할 때마다 코드 블록을 숨길 수 있으며 긴 코드를 쉽게 탐색 할 수 있습니다. 코드 폴딩은 두 가지 방법으로 수행 할 수 있습니다.
i) 코드 자동 폴딩
ii) 코드의 사용자 정의 접기

코드 자동 접기 : RStudio는 자동으로 코드를 접을 수있는 유연성을 제공합니다. 코더가 함수 또는 조건부 블록을 작성할 때 RStudio는 자동으로 접을 수있는 코드를 만듭니다.
사용자 정의 코드 접기 :
편집 -> 폴딩 -> 축소를 사용하거나 코드 그룹을 선택하고 Alt + L 키를 눌러 임의의 코드 그룹을 폴드 할 수도 있습니다. 코드 섹션을 통해 사용자 정의 폴딩을 수행 할 수도 있습니다. 새 코드 섹션을 삽입하려면 코드 -> 섹션 삽입 명령을 사용할 수 있습니다. 또는 4 개 이상의 대시 (-), 등호 (=) 또는 파운드 기호 (#)가 포함 된 주석 행은 자동으로 코드 섹션을 작성합니다.

 

11) 코드를 엄격하게 검토하고 테스트 함 – 코드가 준비되면 다른 입력 매개 변수에 대해 코드를 엄격하게 테스트합니다. for-loop, if 문, ifelse 문이 올바른지 확인하십시오. 동료가 코드를 검토하여 작업의 품질이 높은지 확인하는 것이 좋습니다.

12) 작업 영역을 저장하지 않음 – R을 종료하려면 작업 영역을 저장할지 확인합니다. 작업 공간을 저장하지 않고 다음 R 세션을위한 깨끗한 작업 공간에서 시작하는 것이 좋습니다. 이전 R 세션의 객체는 디버그하기 어려울 수있는 오류를 유발할 수 있습니다. 이들은 코드 작성, 디버깅 및 일관성 유지를 위해 코드 작성을 쉽게 수행 할 수 있도록 R로 작성하는 것이 가장 좋습니다.

 

기타 R 코딩 스타일

이 기사에 나온 코딩 스타일 외에 여러 사이트에서 R 코딩 스타일에 대한 기사를 접할 수 있어 아래에 정리해 놓았으니 참고 바랍니다.

 

코딩 스타일 관련 패키지

Knitr 패키지의 주요 저자이며 R Markdown, Blogdownbookdown 패키지에 크게 기여하고 있는 유명한 Yihui Xie가 제작한formatR 패키지를 사용하면, 형식이 잘못된 코드를 쉽게 정리할 수 있습니다. 모든 코드를 다 정리할 수는 없지만 그래도 끔찍한 코드를 보기 좋은 코드로 빠르게 가져올 수 있습니다. 사용하기 전에 사용법을 숙지해 보시기 바랍니다. 이 패키지는 가독성을 높이기 위해 R 코드를 다시 포맷하도록 설계되었습니다. 주요 함수인 tidy_source() 는 다음과 같은 특징을 가지고 있습니다.

  • 긴 코드 줄과 주석은 더 짧은 줄로 재구성됩니다.
  • 필요한 경우 공백과 들여 쓰기가 추가됩니다
  • 대부분의 경우 주석이 보존됩니다
  • 코드를 들여 쓰기할 공백 수 (즉, 탭 너비)를 지정할 수 있습니다 (기본값은 4입니다)
  • 선행이 없는 별도의 줄에있는 else 문은 한 줄 뒤로 이동합니다.
  • = 대입 연산자로 <- 로 변경 합니다.
  • 왼쪽 괄호 {는 새로운 줄로 이동할 수 있습니다
(Visited 581 times, 3 visits today)