Computing

R 완전 초보가 다뤄보기 -1

깡또아빠 2012. 12. 31. 12:14

뭐부터 해야지?

솔직히 나도 프로그램 설치한지.. 몇시간 지나지도 않았는데, 헐.... 


다같이 초심자의 마음으로 까지것 해봅시다.^^


R Console창에 명령어를 바로 입력해도 되고, 혹은 1줄이상 길어질 경우에는 스크립트 창에다가 프로그래밍을 작성한 후, 복사하여 명령어를 먹여도 된다. (Matlab에서는 m창을 열어서 작업하듯이 말이다.)


자료를 벡터 형태로 마들어주기 위해서는 c함수라는 것을 이용하면 된다. 

(처음에는 c프로그래밍과 관련있는 건가? 라는 오해도 했다;;)


c(1,2,3,4,5)을 Console창에 입력하고서 Enter를 쳐보며,



하나의 벡터가 만들어졌음으로 보이는 [1] 뒤에 1,2,3,4,5 가 입력되어 있음을  알 수 있다.

그런데 저렇게 되면 저 1,2,3,4,5를 불러올 수가 없다. 변수를 적용해서 해보자.


임의로 x라는 변수로 적용해보면,



변수를 적용해서 입력하였더니 실행결과가 바로 창에 나타나지는 않는다. 

다시 변수(여기서는 x)을 입력하여 결과를 확인하였다. 또한 변수명과 =(equal) 그리고 입력값 사이에 공백은 무시가 되고 있음을 확인할 수 있었다.


만약에 1부터 100까지 입력해야 한다면, 하나씩 쳐야 할까?

말도 안된다. 그럴거면 프로그래밍을 쓰지 않을꺼다!!! 

seq라는 함수를 이용해보자



x2라는 변수에다가 입력했다. 헐... [1]이 하나의 벡터인줄 알알았는데... 아닌가보다. 그럼 뭐지?

시작하는 줄의 값을 나타내는건가? 위만 봐서는 그런것 같지만, 확신할 수 없다.

차근차근 알아가보자


Matlab에서는 seq라는 명령어 없이 바로 입력하면 되었는데, 여기서는 어떨까?



앗. 오타가 있었지만, 된다. ㅋㅋㅋ x3이라는 변수명으로 입력해보았다.

(참고로 Matlab에서는 명령어 뒤에 세미클론(;)을 붙이지 않으면 바로 실행된 결과가 창에 뜬다.)


일정한 간격으로 값을 구하기 위해서는 by라는 명령어를 덧붙여서 사용하면 된다.



1부터 100까지 입력되는 값을 5단위로 끊어서 입력하게끔 하였다.

이 경우 seq함수 안에다가 다같이 입력해야만 가능함을 알 수 있었다.

(Matlab에서는 1:5:100 이라는 방법을 사용했었다. 1부터, 100까지 출력하는데 5단위의 증가를 갖는다는 의미이다.)


rep을 함수명을 이용해서 반복되는 수를 입력할 수도 있다.


rep()안에 입력될 수와, 반복될 수를 입력하여 2를 5번 입력하였다.

1부터 5까지의 연속된 수를 3번 입력하라는 명령해보았다.

Matlab 때가 생각나서 입력해보았다. 역시 경고문구가 뜬다. 각 프로그램마다 특징이 있는 거니까.. 근데 실행은 된다. 으흠.. 아직 잘 모르겠다.


seq, by을 이용해서 다른 명령도 때려보자(?)



헐... 된다. ㅎㅎㅎ 아... 이제 알겠다. [23]이 23번째 값이다. 시작되는 행의 값이 아닌 시작되는 값의 순서~위치였구나!!! 


저렇게 자꾸 꼬아서 코딩을 하게 될 날이 많을거다. 

나중에 보면 주석을 달아놔야 알텐데, 주석은 어떻게 달지?



흐음... 구글에서 검색해보아도 잘 모르겠고, %나 ' 둘다 R프로그램에서 따로 사용중인것 같다. 혹시나해서 #(우물정)을 가지고 테스트 해봤는데 된다.

근데, 이게 주석이 맞는지 아직 확신할 수는 없다. 그래도 일단 확인할 때까지 사용해보겠다.


자료가 문자일 경우에는 ""을 기본적으로 사용해야 한다. 이 부분은 다 똑같은 것 같다.



통계 프로그램을 사용하다보면, 행렬을 반드시 이용할 수 밖에 없다. 벡터의 개념, 즉 선형대수학이 그만큼 중요한데,... 뭐 생각해보면 통계 뿐만 아니라 Data를 다룬다면 다 중요한 것 같다.


R에서는 matrix 함수를 사용한다.



첫번째의 문장의 경우 1부터 5까지의 데이터 값을 행의 크기가 2로 만들려다보니, matrix의 크기가 맞지 않아서 에러가 난 것이다.


1~6의 크기를 2행으로 만들어 보니 에러가 나타나지 않았다.

또한 데이터의 입력 순서는 열(col) 기준이었다. 이는 byrow=F와 같다. (F=False)

True인 byrow=T를 명령하게 되면 행(row)부터 채워지게 된다.


만들어 놓은 matrix의 일부분만을 보고자 할 경우 [] 대괄호를 사용하면 된다. 중괄호인가?



z 변수의 크기를 알고자 할 경우 dim 함수를 사용하면 된다.

matrix의 경우가 아닌 벡터만 있는 경우(row or col이 1인 경우)에는 NULL값을 출력하는 것으로 보인다.

으흠.. 그냥 매트릭스로 출력해도 될텐데... 이유가 있겠지?


row와 col에 이름을 지정하고자 할 경우에는 rownames(), colnames()을 사용하면 된다.




matrix의 곱과 합의 경우 그 크기가 맞아야 한다. (당연한거다)

행렬의 곱의 경우 일반 변수의 곱셈과 구별하기 위하여 %*%처럼 곱셈 앞/뒤로 %를 붙여준다.


자... 다음에는 뭘 해볼까?


실습하면서 블로그에 글을 쓰려니까, 시간은 오래 걸리지만 재밌다.

왠지 같이 학습하는 것 같다. 느리지만 괜찮다. 제대로 배워보자~


모두들 새해 복 많이 받으세요^^


이상. 끝