내가 터득한 R 프로그램

[R프로그래밍] 몇가지 법칙과 간단한 함수

물티쿨티(multikulti) 2018. 5. 11. 00:00

자 다시한번 포스팅을 이어 나가 보도록 하겠습니다.


지난 시간에 간단한 사칙 연산과 문자(X,Y따위)에 연산을 넣는 것도 잠깐 배워봤습니다.


그런데 문자를 정의할 때 문제가 생기는 것들이 있습니다.



첫번째로 a1,a2, 이런식으로 숫자를 포함해서 문자를 정의할 식을 넣을 수 는 있지만 문자보다 숫자가 먼저나오면 에러가 뜹니다.


두번째로 특수기호를 포함시킬수 없습니다.

!$%&*따위 같은 것들을 문자와 함께 포함하면 또 에러가 뜹니다.


세번째로 대문자와 소문자 구분해서 정의할 수 있습니다. 즉 A와 a는 R프로그램에서 완전히 다른 문자로 인식한다는 것이지요.


자 이제 조금 복잡한 것을 해봅시다.


R 프로그램에서 문자에 하나의 수식값만 넣을 수 있는게 아니라 여러개의 숫자도 넣을 수 있습니다. 스크립트 창에 a <- 1:6 을 입력하면 a라는 문자에 1,2,3,4,5,6 숫자가 들어갑니다. 또는 a<-c(1,2,3,4,5,6)을 입력하시면 됩니다. 앞에 c를 반드시 붙여주시고 괄호안에 담을 숫자들을 나열해줍니다.  그리고 스크립트 창에 다시 a라고 쳐보면 a안에 뭐가 들어가 있는지 보여줍니다.



a-1을 하면 어떻게 될까요? 또는 a를 4로 나누면 어떻게 될까요? 또는 a와 a를 곱하면 어떻게 될까요? 한번 해봅시다.



이렇게 a가 담고 있는 값 각각에 1을 빼거나 4를 나누거나 1은 1과 곱하고 2는 2와 곱하는 형식으로 해서 값이 도출이 됩니다.

그러면 만약에 a의 길이와 같지 않은 벡터값을 곱하면 어떻게 될까요? 



1과 2, 또는 1,2,3 순차적으로 리사이클링(1:2는 1,2,1,2,1,2, 1:3은 1,2,3,1,2,3)해서 곱해줍니다. 그렇지만 1:4에서는 경고창이 뜨죠? 두 객체의 길이가 서로 배수관계에 있지 않는다고 뜹니다. 그럼에도 불구하고 결과값은 보여주었는데요 a의 나열된 숫자에다가 각각 1,2,3,4,1,2 이렇게 곱해준거지요. 경영수학에서 배우는 매트릭스도 할 수 있는데요 그냥 보여드리기만 하겠습니다. %*%, 또는 %o%. %*%는 a와 a를 곱해서 더한것입니다. 



함수


자 이제 좀 본격적인 R을 들어가 봅시다. R은 다른 컴퓨터 프로그램과 같이 언어를 알아야합니다. 그 언어를 배우는게 처음에는 조금 힘든데요. 그래도 초반에 잘 익혀놓으시면 나중에 좀 더 편히 R프로그램을 다루실 수 있을 겁니다.


그중에서 간단한 몇 개 함수들부터 시작해보겠습니다. R프로그램은 통계에 많이 쓰이잖아요? 통계의 개념들도 좀 알아야하는데 통계부분을 아예 따로 때서 카테고리를 만들지 아니면 R프로그램 안에서 같이 할지는 조금 고민하고 있습니다. 어찌됐든 오늘은 어려운 걸 배울 건 아니니까 그냥 진행해보겠습니다.


평균값을 구하는 언어는 "mean"입니다.

예를 들어 1부터 100까지 나열한 값의 평균을 구하고 싶다. 어떻게 하면 될까요? a에 1:100을 집어넣어서 mean(a)라고 해도 되구요 그냥 mean(1:100)이라고 해도 됩니다.



그런데 값에 소수점이 있죠? 이 소수점을 반올림할 수도 있습니다. 함수를 한번에 한개만 넣을 수 있는게 아니라 여러개를 넣을 수도 있습니다.



여기서 중요한점은 함수의 순서인데요 함수가 여러개가 쓰인 경우 R은 가장 안쪽에 있는 식부터 계산합니다. 즉 여기서는 평균값을 구하고 그 다음에 반올림을 하는거죠. mean(round(a))라고 해버리면 a값 안에는 반올림을 할 소수점이 없기 때문에 50.5가 그대로 나옵니다.


평균값을 구해봤으니 표준편차와 분산을 구해볼까요? 표준편차의 함수는 sd, 분산의 함수는 var입니다.

임의대로 숫자를 x라는 문자안에 넣어보고 그것의 평균, 분산, 표준편차를 구해보겠습니다.

x<-c(1,3,7,10,17,22,25,30)



여기까지 잘 따라오셨나요? 오늘은 몇가지 함수에 대해서 배워봤습니다. 다음에 더 알찬 내용으로 포스팅하도록 노력하겠습니다.