개발

R언어 기초 문법, 모르면 무조건 보세요 1편

IT의 타이탄 2023. 9. 7. 17:04
SMALL

이번 글에서는 R언어에 대한 기초 문법을 작성해볼까 합니다. 저는 응용통계학을 배우기전 R언어라는 언어를 들어본적도 없었습니다.

 

 

그렇기에 만약 이 글을 보시는 분들이 R언어에 대한 기초도 없으시다면 정말 행운이라고 생각하셔도 좋습니다.

 

 

초보도 이해하기 쉬울 정도로 제가 최대한 쉽게 작성할 예정이니 3분의 시간만 투자해주시면 감사하겠습니다.

 

 

R언어에 대한 기초문법 설명은 3편으로 구성할 예정입니다!

 

 

1. R언어의 기초 / 데이터 타입

 

2. 벡터 / 리스트

 

3. Factor / Data Frame / Data Import

 

 

그러면 R언어의 기초부터 시작하도록 하겠습니다.

 

R언어의 기초문법

 

1. R언어의 기초

R언어는 파이썬과 C++과 같은 컴퓨터 언어입니다.

 

 

R언어는 우리가 언제 사용하게 될까요? 바로 데이터를 통한 통계를 낼때 주로 사용하곤 합니다.

 

 

데이터를 통해 통계를 내고, 통계의 실제 그래프는 어떤지, 통계값은 어떻게 가지고 있는지 등의 언어로 사용하는 R언어는 변수의 이름을 지어줄 때, 5가지의 관습을 따르곤 합니다.

 

 

이 관습은 마이크로 소프트의 창립자인 빌게이츠의 경험담에서 나왔는데요.

 

 

한명의 팀원이 비정상적인 개발 퍼포먼스를 보여주고 있었고 그 팀원에게 어떻게 그게 가능했는가? 라고 물어봤을 때, 자신만의 변수를 만드는 규칙을 세웠다고 합니다.

 

 

그 팀원은 헝가리인이었기에 이 5가지의 관습을 헝가리안 표기법이라고도 불립니다.

 

변수를 만드는 5가지 관습 (헝가리안 표기법)

1. 소문자로 만들어라 (alllowercase)

 

2. period.separated

 

3. underscore_seperated

 

4. lowerCamelCase (낙타의 등과 비슷하고 소문자로 시작하는 케이스)

 

5. UpperCamelCase (낙타의 등과 비슷하고 대문자로 시작하는 케이스)

 

 

이 관습은 반드시 따라야하는 것은 아니지만, 사회적으로 통용되고 있는 규칙을 따르면 팀원간의 프로젝트를 진행할 때, 이해하기 훨씬 쉬울 것이기에 기억은 하고 있으면 좋을 것 같습니다.

 

 

R언어의 주석처리 (#을 사용하라!)

주석처리란, 컴퓨터가 연산을 처리하지 않는 코드로, 사람들이 이해하기 쉽게 표현해놓은 것입니다.

 

 

예를 들어 다음과 같은 코드가 있습니다.

x = 3
y = x + 3  # y는 양의 정수가 나올것입니다.

print(y) #y는 6이다.

 

여기서 #뒤에 있는 문장들은 컴퓨터가 신경쓰지않고 연산을 하게 될것이며, y는 6이 출력되는 것을 확인할 수 있습니다.

 

 

R언어의 주석처리방법은 #이라는 기호를 사용하는 것이고 #기호없이 한글 문장을 쓰게 된다면 error가 출력될 것입니다.

 

 

R언어의 기초를 배웠다면 이제는 문법을 배워볼 차례입니다. 문법은 외우는 것이 가급적이면 좋지만, 외우지 않더라도 계속해서 사용함으로써 자연스럽게 나오게끔 하는것을 추천드립니다.

 

 

우리가 1+1 = 2이다라고 외우진 않았지만 자연스럽게 알고 있는 것처럼 계속해서 사용한다면, 자연스럽게 외워질 것입니다.

 

 

다음은 R언어의 데이터 타입입니다.

 

2.  R언어의 데이터타입

R언어의 데이터타입은 크게 5가지가 존재합니다.

 

 

1. Numeric => 실수

 

2. Integer => 정수

 

3. Complex => 복소수

 

4. Logical => 논리값

 

5. Character => String (문자)

 

 

R언어는 특이하게 숫자를 변수에 담게되면 변수의 데이터값은 무조건 Numeric으로 고정됩니다.

 

 

변수의 데이터값을 찾는 함수는 class()라는 함수로 만약 다음과 같은 코드를 치고 출력하게 되면 다음과 같게 나옵니다.

 

> x = 10.5
> x
[1] 10.5 #출력값

> class(x) #x의 데이터타입이 무엇인지 확인하는 코드
[1] "numeric" #출력값

 

만약 x = 1이라는 코드를 작성하게 된다면 class(x)는 numeric일까요 아니면 Integer일까요? 정답은 numeric입니다.

 

 

그렇다면 x의 데이터타입을 integer로 변경하기 위해선 어떤 함수를 써야할까요? 바로 as.integer라는 함수를 사용해야합니다.

 

> x = as.integer(3) #데이터타입은 integer로 지정해준 함수
> class(x)
[1] "Integer" #출력값

 

Integer함수는 숫자와 스트링으로 표시된 숫자만 담을 수 있습니다. 스트링으로 표시된 숫자라고 하면 "n"인 경우입니다. (n은 실수)

 

 

컴퓨터는 ""을 붙일 경우 문자로 인식하기 때문에, 다른 컴퓨터 언어에서는 "3"은 문자입니다.

 

 

R언어에서는 "5.27"과 같은 문자안에 있는 소수도 정수로 변환이 가능하며 코드를 치면 다음과 같이 출력됩니다.

 

> as.integer("5.27")
[1] 5 #출력값

 

Integer는 논리값도 담을 수 있는데요. 해당 코드는 다음과 같습니다.

 

as.integer(TRUE) = 1 
as.integer(FALSE) = 0

 

 

Complex는 복소수라는 의미로 다른 언어에서는 찾기 힘든 데이터 타입입니다.

 

 

파이썬에서는 complex()라는 함수를 사용하면 복소수라는 데이터타입을 정할 수는 있지만 R언어에서는 i를 사용하고 파이썬에서는 j를 사용하게 됩니다.

 

 

Complex의 데이터타입을 sqrt()라는 함수를 씌웠을 때, 나오게되는 에러와 해결방식을 ppt로 보여드리도록 하겠습니다.

(sqrt() -> 제곱근을 구하는 함수)

 

복소수를 표현하는 데이터타입 : complex

 

Logical은 TRUE 및 FALSE값을 가지고 논리연산자는 다음과 같습니다.

& = and
| = or
! = not

 

 

Character는 R언어의 스트링 데이터타입이라고 생각하시면 됩니다.

 

 

Character도 integer와 마찬가지로 숫자를 할당할경우 as.character라는 함수를 통해 데이터타입을 지정해줘야 numeric이 아닌 character의 데이터타입을 가질 수 있습니다.

 

 

Character의 경우 문자열을 이어붙일 수 있으며, 해당 함수는 다음과 같습니다.

 

paste()

 

또한 문장을 잘라내는 함수와 교체하는 함수까지 존재합니다.

 

Character 데이터타입 함수예시

 

substr("문장", start = a, stop = b) #문장을 잘라내는 함수
replace("단어A", "단어B", " 단어A, 단어B" ) #문장을 교체하는 함수
=> "단어B 단어B"

 

다만, 여기서 주의해야할 점은 다른 컴퓨터 언어와 다르게 R언어에서는 인덱스가 1부터 시작한다는 점입니다.

 

 

그렇기에 위에 있는 함수의 매개변수 a에는 0이 들어가면 안되는 것입니다. 반드시 기억하시길 바랍니다.

 


 

지금까지 R언어의 기초와 R언어의 데이터타입에 대해 작성해보았는데요.

 

 

모르는 부분이 있거나 이해가 안되시면 댓글 달아주시길 바랍니다. 최대한 정확하고 빠르게 답변 달아드리도록 하겠습니다.

 

 

긴 글 읽어주셔서 감사드리고 더 좋은 정보로 찾아뵙도록 하겠습니다.

LIST