R 문법
전반적인 문법을 다루고 데이터 컬렉션에 대해 설명하는 것이 맞지만, R에서는 기본적으로 벡터화되어 있기 때문에 벡터를 먼저 다루었는데요. 이번 게시글에서는 R의 문법에 대해 알아보겠습니다.
반복문
R에서도 반복문으로 `while`, `repeat`, `for` 을 사용가능합니다.
while, repeat
먼저, `while`을 사용하는 법에 대해 알아보겠습니다.
다른 언어들과 마찬가지로 while의 ()안에는 조건이 들어갑니다. () 조건이 TRUE(만족) 이면 반복하고 FALSE 이면 중단하는데요. ()의 조건이 만족하더라도 `break` 키워드를 통해 while 문 밖으로 탈출할 수 있습니다.
추가적으로 while(TRUE) 대신 `repeat`을 이용할 수 도 있습니다.
for
`for` 문을 통해 반복할 수 있으며, `in`을 통해 각 원소에 접근할 수 있습니다.
참고로 for문의 in으로는 벡터가 아닌 다른 타입(Matrix, Data Frame)에는 사용불가능합니다.
for 문을 통해 Matrix에 접근하고 싶으면 반복문을 중첩해서 이용하거나, get()을 이용해야합니다.
get() 은 변수명(string)으로 데이터를 가져옵니다.
조건문
if-else 를 통해 조건문을 사용할 수 있습니다.
또한, 간단한 if-else 문의 경우 한줄로도 작성할 수 있습니다.
조건문 and, or
조건문에서 많이 사용하는 and, or 는 `&&`과 `||` 를 이용합니다.
`&&`, `||`는 단일 불리언 값에 대해서만 사용이 가능합니다. 따라서 벡터에 사용시 경고문과 함께 첫 번째 값끼리 계산합니다.
`&`, `|` 의 경우 벡터 원소간의 and, or 계산의 사용되고, 벡터를 반환하기 때문에 단일 Boolean 값이 필요한 if 문에는 사용할 수 없습니다.
상황에 따라 TRUE 는 1으로 FALSE 는 0으로 표현되기도 합니다.
함수
`function` 키워드를 통해 함수를 생성할 수 있는데요. 함수도 변수와 마찬가지로 동시에 선언과 할당을 해야합니다.
함수 반환값으로 자동으로 마지막에 온 변수(count)를 반환합니다.
다른 사람이 코드를 보고 이해하기 쉽게 명시적으로 return 을 써주는 것을 추천드립니다.
R에서의 함수는 `일급 객체`로 함수를 변수처럼 사용가능합니다.
일급객체 특징
1. 함수를 변수에 할당할 수 있습니다: 함수를 변수에 저장하거나 다른 함수에 전달할 수 있습니다.
2. 함수를 함수의 인자로 사용할 수 있습니다: 다른 함수에 함수를 전달하거나 콜백 함수로 사용할 수 있습니다.
3. 함수를 함수의 반환 값으로 사용할 수 있습니다: 함수가 다른 함수에서 생성되어 반환될 수 있습니다.
4. 함수를 자료 구조에 저장할 수 있습니다: 리스트, 벡터 또는 다른 자료 구조에 함수를 저장할 수 있습니다.
지역 변수 전역 변수
함수 안에서 선언된 변수는 지역 변수로 함수가 실행되고 나면 사라진다. 위 코드에서 return 되는 값(count)은 유지되고 n은 사라진다.
함수 선언부 밖에 있는 `global_x`를 함수 내부에서 global_x에 값을 대입해도 변화가 없다. 이는 함수는 (대부분) 전역 변수를 바꾸지 않는다.
함수의 특이한 사용법들
1) 함수 중첩
위와 같이 함수를 중첩시켜서도 사용가능합니다.
2) 재귀 함수
재귀 함수는 함수 안에 자기 자신이 다시 실행된다. 단, 탈출 조건 (if 문)이 있어야 한다.
3) replacement 함수