2014년 가을학기 손시운 (ssw5175@kangwon.ac.kr) 지도 교수: 문양세 교수님
R 실행
R의 두 가지 사용 방식 인터랙티브 모드 (Interactive Mode) 주로 사용 배치 모드 (Batch Mode) 명령어를 입력하면 결과를 바로 보여주는 형식 배치 모드 (Batch Mode) 사용자와 인터랙션이 없음 여러 줄로 구성된 소스 코드를 일괄적으로 처리 실행 작업에 유용 User R Command Result 인터랙티브 모드 User R 배치 모드 Source code Result
R의 두 가지 사용 방식 (1/3) 인터랙티브 모드 “임의의 수 10개를 생성한다.” “100개의 임의의 수를 생성하여 절대 값을 취하고 평균을 구한다.”
R의 두 가지 사용 방식 (2/3) - skip 배치 모드 (1/2) “임의의 수 100개를 생성해 히스토그램을 그린다.” 기호 ‘#’은 주석을 의미 실행
R의 두 가지 사용 방식 (3/3) - skip 배치 모드 (2/2) 결과
R 기초
값 할당 및 데이터 연결 기호 ‘<-’: 다른 언어의 기호 ‘=’와 유사하게 값을 할당하는 기호 c() 함수: 데이터(벡터)들을 연결하는 함수 벡터 이름만 입력해도 벡터에 저장된 값을 출력할 수 있음 함수 c()안에 다른 벡터를 저장할 수 있음
인덱싱 출력 벡터 내 개별 값들을 기호 ‘[]’를 통해 찾을 수 있음 기호 ‘[]’ 내에 들어가는 값을 ‘인덱스’ 또는 ‘첨자’라고 함 인덱스는 다른 언어와 달리, 0이 아닌 1부터 시작 인덱스에 콜론(:)을 사용하여, 범위를 지정할 수 있음
데이터 세트 및 그래프 data() 함수: R에 내장되어 있는 데이터 세트의 리스트를 출력 hist() 함수: 데이터 세트를 통하여 히스토그램을 출력 e.g. R에 내장된 나일강의 흐름에 대한 데이터 세트를 히스토그램으로 표현 > hist(Nile)
R 함수
함수 소개 (1/2) 함수: 입력 값을 넣고, 이를 계산해 결과 값을 출력하는 명령어들의 묶음 e.g. 정수형으로 이뤄진 벡터에서 홀수의 개수를 세는 oddcount()함수 정의
함수 소개 (2/2) line 1~7: oddcount <- function(x) { … } x를 입력 받아 {…} 내에서 처리하는 함수를 oddcount라는 이름으로 정의 line 2: k <- 0 k의 값을 0으로 할당 line 3~5: for (n in x) { … } x에서 값을 순서대로 하나씩 n으로 할당하여 반복 line 4: if (n %% 2 == 1) k <- k+1 %%는 나머지 값을 돌려주는 모듈로 연산자 n의 값이 홀수일 경우 k 값을 1씩 증가시키는 조건문 line 6: return(k) 계산 결과(k)를 돌려주는 함수 return()함수 없이 간단히 k라 작성할 수 있음
변수의 범위 지역 변수: 함수 본문 내에서만 볼 수 있는 변수 전역 변수: 함수 밖에서 생성되는 변수 oddcount()에서는 x, k, n이 지역변수 함수 호출 후에 모두 사라짐 전역 변수: 함수 밖에서 생성되는 변수
기본 인수 인수: 함수를 호출할 때, 함수에 입력하는 변수 기본 인수: 함수 호출 시, 따로 지정해주지 않아도 초기화되는 변수 e.g. g <- function (x, y=2, z=T) { … } 함수 g()를 호출할 때, y와 z를 지정해주지 않으면 2와 True로 초기화 g(12, z=FALSE)라고 호출 시, x=12, y=2, z=FALSE로 초기화
R 데이터 구조
벡터 R의 핵심 벡터의 원소는 모두 같은 데이터 형태를 가져야 함 스칼라 e.g. 세 개의 문자열로 이뤄진 문자 형식의 벡터 단일 수치를 변수에 할당할 경우, 실제로 변수는 하나의 원소를 갖는 벡터 e.g. x <- 8 x[1]이 8인 벡터 x
문자열 문자열: 실제로는 문자 형식의 단일 원소를 갖는 벡터 y는 한 개의 원소를 갖는 문자열 벡터 z는 두 개의 원소를 갖는 문자열 벡터 length() 함수: 벡터의 길이를 구하는 함수 mode() 함수: 벡터의 데이터 형을 구하는 함수
행렬 (1/2) 행렬: 행과 열의 개수라는 두 가지 속성을 추가로 갖는 벡터 rbind() 함수: 벡터들을 행으로 결합하여 행렬을 만듦 (행 결합) cbind() 함수: 벡터들을 열로 결합하여 행렬을 만듦 (열 결합) %*%: 행렬 곱 연산자 예제에서는 행렬 m과 벡터 (1,1)의 곱을 계산
행렬 (2/2) 행렬은 C/C++ 또는 Python과 달리, 인덱스가 1부터 시작 행렬의 행(또는 열)을 비워, 부분 행렬을 구할 수 있음
리스트 (1/2) 리스트: 여러 데이터 형을 담을 수 있는 데이터 구조 C/C++의 구조체 및 Python의 딕셔너리와 유사 각 원소는 $ 기호로 구분 리스트는 보통 함수에서 여러 값을 하나의 묶음으로 합쳐 반환할 때 사용
리스트 (2/2) e.g. 나일강 데이터의 히스토그램 리스트 hist() 함수에서 그래프를 만들며 여러 값을 가진 리스트를 반환
데이터 프레임 일반적인 데이터 세트는 여러 형식의 데이터를 포함 e.g. employee 데이터 세트는 name(문자열), salary(정수) 등 이러한 데이터는 R의 행렬로 표현할 수 없음 데이터 프레임: 일종의 리스트로서, 각 리스트의 구성 요소는 벡터 데이터 프레임은 파일 또는 DB에서 데이터 세트를 읽을 때 사용
도움말 사용
help() 함수 help() 함수: 온라인 도움말을 보기 위한 함수 e.g. seq() 함수에 대한 정보가 필요할 경우 > help(seq) > ?seq 특수 문자와 일부 예약어를 help() 함수에 사용할 경우 “”를 동시에 사용 > ?"<" > ?"for"
example() 함수 example() 함수: 함수의 예제들을 실제로 실행 e.g. 산술적 방법을 통해 다양한 방법의 숫자 배열을 생성하는 seq() 함수 예제
무엇을 찾는지 정확히 모르는 경우 help.search() 함수: R의 문서를 구글처럼 검색 e.g. 다변량 정규 분포 식과 관련된 함수가 필요할 경우 > help.search("multivariate normal") mvrnorm() 함수가 있으며, 이 함수는 MASS 패키지에 있음을 확인