시리즈:쉽게 R 수 있는 R 편집하기

편집하면 당신의 IP 주소가 공개적으로 기록됩니다. 계정을 만들고 로그인하면 편집 시 사용자 이름만 보이며, 위키 이용에 여러 가지 편의가 주어집니다.

편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.

최신판 당신의 편집
1번째 줄: 1번째 줄:
{{:시리즈:쉽게 배우는 프로그래밍 입문}}
==R이란?==
 
==R이란?==
[[R (프로그래밍 언어)]] 항목을 참고. 요약하자면 R은 통계 분석 및 관련 프로그래밍에 최적화된 [[프로그래밍 언어]], 또는 R을 이용하여 통계 및 기타 작업을 하는 [[소프트웨어]]를 의미한다.
[[R (프로그래밍 언어)]] 항목을 참고. 요약하자면 R은 통계 분석 및 관련 프로그래밍에 최적화된 [[프로그래밍 언어]], 또는 R을 이용하여 통계 및 기타 작업을 하는 [[소프트웨어]]를 의미한다.


7번째 줄: 5번째 줄:
자유도가 높다. 다른 프로그램들이 일반적인 RPG 게임 정도의 자유도를 보여준다면 R은 [[스카이림]]과 맞먹는 자유도를 보여준다. 더불어 기능을 확장하여 쓸 수 있는 패키지{{ㅊ|확장팩}}가 무지하게 많기 때문에 다양한 작업이 가능하다. 또한 무료이기 때문에 [[기업]]에서도 많이 쓴다.
자유도가 높다. 다른 프로그램들이 일반적인 RPG 게임 정도의 자유도를 보여준다면 R은 [[스카이림]]과 맞먹는 자유도를 보여준다. 더불어 기능을 확장하여 쓸 수 있는 패키지{{ㅊ|확장팩}}가 무지하게 많기 때문에 다양한 작업이 가능하다. 또한 무료이기 때문에 [[기업]]에서도 많이 쓴다.


프로그램도 가벼운 편. 비교적 컴퓨터 성능에 영향을 받지 않고 데이터를 빨리 처리해준다.
여담이지만 R을 충실히 해둔다면 유사한 형태의 객체지향형 [[프로그래밍 언어]]를 익힐 때 정말 유리하다. for문까지 익히고 가면 [[쉬운 프로그래밍]] 항목을 어느 정도 이해할 수 있다!  
 
여담이지만 R을 충실히 해둔다면 유사한 형태의 객체지향형 [[프로그래밍 언어]]를 익힐 때 정말 유리하다. for문까지 익히고 가면 [[시리즈:쉽게 배우는 프로그래밍 입문]] 항목을 어느 정도 이해할 수 있다!  


===R을 이용하면 안 되는 이유===
===R을 이용하면 안 되는 이유===
{{ㅊ|도망쳐!}} 학부생 수준에서는 보통 [[R (프로그래밍 언어)|R]]을 쓸 필요가 없다. 일반 상용 소프트웨어를 이용하는 것이 훨씬 편리하고 쉬우며 결과도 잘 나올 가능성이 높다. 세상에는 [[엑셀|EXCEL]], Eviews, SPSS, SAS, STATA, MATLAB 같은 좋은 프로그램들이 많으며 R을 제대로 익히는 것보다 앞의 프로그램들을 전부 익히는 것이 빠를지도 모른다! 앞의 프로그램들이 유료라서 부담이 된다면 [[gretl]]이란 프로그램을 이용해도 된다.<ref>단 간단한 회귀분석만 지원하며 데이터 처리의 정확도가 앞의 프로그램들보단 떨어진다.</ref> 통계 분석에 R을 이용하기 위해선 R의 프로그래밍 언어를 익혀야 되기 때문에 R의 사용법을 익히는 것은 다른 소프트웨어를 배우는 것에 비해 훨씬 더 어렵다. 시간을 많이 투자해도 생각한 만큼 결과가 잘 나오지 않을지도 모른다.
{{ㅊ|도망쳐!}} 학부생 수준에서는 보통 [[R (프로그래밍 언어)|R]]을 쓸 필요가 없다. 일반 상용 소프트웨어를 이용하는 것이 훤씬 편리하고 쉬우며 결과도 잘 나올 가능성이 높다. 세상에는 [[엑셀|EXCEL]], e-view, SPSS, SAS, STATA같은 좋은 프로그램들이 많으며 R을 제대로 익히는 것보다 앞의 프로그램들을 전부 익히는 것이 빠를지도 모른다! 앞의 프로그램들이 유료라서 부담이 된다면 [[gretl]]이란 프로그램을 이용해도 된다.<ref>단 간단한 회귀분석만 지원하며 데이터 처리의 정확도가 앞의 프로그램들보단 떨어진다.</ref> 통계 분석에 R을 이용하기 위해선 R의 프로그래밍 언어를 익혀야 되기 때문에 R의 사용법을 익히는 것은 다른 소프트웨어를 배우는 것에 비해 훨씬 더 어렵다. 시간을 많이 투자해도 생각한 만큼 결과가 잘 나오지 않을지도 모른다.


==설치 및 환경 설정==
==설치 및 환경 설정==
[https://www.r-project.org/ R Project 공식 웹사이트]에 접속하여 다운 받으면 된다. [https://cran.r-project.org/mirrors.html 다운로드 페이지]에 들어가면 수많은 링크가 뜨는데 당황하지 말고 가까운 지역을 찾아 다운하면 된다. 사실 지구 반대편에 위치한 곳을 이용해도 속도는 큰 차이가 없다.  
[https://www.r-project.org/ R Project 공식 웹사이트]에 접속하여 다운 받으면 된다. [https://cran.r-project.org/mirrors.html 다운로드 페이지]에 들어가면 수많은 링크가 뜨는데 당황하지 말고 가까운 지역을 찾아 다운하면 된다. 사실 지구 반대편에 위치한 곳을 이용해도 속도는 큰 차이가 없다.  


사용에 도움이 되는 프로그램을 같이 설치해도 좋다. R Studio나 Tinn-R, RKWard 등이 있다. 이 중 가장 대중적으로 많이 쓰이는 프로그램은 [https://www.rstudio.com/ R Studio].
사용에 도움이 되는 프로그램을 같이 설치해도 좋다. R Studio나 Tinn-R, RKWard 등이 있다. 이 중 가장 대중적으로 많이 쓰이는 프로그램은 [https://www.rstudio.com/ R Studio]. 단, 그래프를 작업을 할 때는 한글이 지원되지 않고 바로바로 큰 화면에서 그림을 확인하는 것이 어렵기 때문에 불편하다.


R의 [[확장팩]]이라고도 할 수 있는 패키지의 설치 방법은 후술.
R의 [[확장팩]]이라고도 할 수 있는 패키지의 설치 방법은 후술.
25번째 줄: 21번째 줄:
본 문서는 R의 기본적인 문법 구조를 이해하고 데이터를 입력하고 출력하고 간단한 산수를 하는 것을 목표로 하고 있다. [[엑셀]]을 비롯한 다른 통계 프로그램을 이용하면 10분이면 끝날 일을 엄청난 공을 들여 하게 될 것이다.(...)
본 문서는 R의 기본적인 문법 구조를 이해하고 데이터를 입력하고 출력하고 간단한 산수를 하는 것을 목표로 하고 있다. [[엑셀]]을 비롯한 다른 통계 프로그램을 이용하면 10분이면 끝날 일을 엄청난 공을 들여 하게 될 것이다.(...)


===R의 문법 구조===
==R의 문법 구조==
이 문서는 R 언어에 대한 설명과 예제로 이루어져 있다. 박스 안의 예제는 처음부터 끝까지 그대로 복사해서 R 스크립트, 혹은 명령 프롬프트에 붙여넣고 {{키|Enter}}를 누르면 결과값이 출력되는 것을 볼 수 있다.
 
====시작====
R의 모든 것은 객체(object)다. 함수, 연산자, 변수 모두. 객체의 종류에 대해서는 R의 데이터 기본형 항목을 참고하면 좋다.
 
화살표와 등호를 이용하여 객체에 값을 부여하여 객체를 생성할 수 있다. 아래는 3의 값을 갖는 libre라는 객체를 생성하는 R 코드다.
<syntaxhighlight lang="Rsplus">
libre<-3      # libre=3 을 대신 입력해도 된다.
libre      #이제 libre를 호출하면 3이라는 값이 호출된다.
</syntaxhighlight>
 
====R의 데이터 기본형====
R은 데이터를 처리할 때 데이터를 기본형에 따라 서로 다르게 분류하여 처리한다. 데이터 기본형에 대한 이해 없이 코드를 입력하면 오류가 날 가능성이 매우 높다. R에서 자주 쓰이는 데이터 기본형은 다음과 같다.
#numeric(수치형) : 정수 및 실수. 우리가 흔히 생각하는 실수의 개념과 거의 일치한다. 실수로 구성된 벡터도 numeric에 포함된다.
#logical(논리형) : TRUE(참)과 FALSE(거짓)이 여기 포함된다. 첫 글자만 딴 T,F와 1,0도 여기에 포함될 수 있다.
#complex(복소수형) : numeric과 마찬가지로 복소수로 된 벡터도 여기에 포함된다.
#character(문자형) : numeric, logical, complex가 아닌 나머지가 여기 다 포함된다고 생각하면 된다. 큰 따옴표 안에 넣어야 R이 character임을 인식한다.
#list(리스트) : 리스트. 해당 기본형에 대해서는 후술.
#function(함수) : 우리가 생각하는 그 함수가 맞다.
 
mode()함수를 통해 기본형을 확인할 수 있으며 as.~() 함수를 이용해 데이터의 형태를 변환하는 것도 가능하다. as.XXXX(libre)에서 XXXX자리에 원하는 데이터 기본형을 입력하면 입력한 기본형의 형태로 변환된다. 단 항상 변환되는 것은 아니다.
 
<syntaxhighlight lang="Rsplus">
mode(libre)    #위에서 생성한 libre의 기본형을 알 수 있다. libre의 기본형은 수치형이다.
libre<-as.character(libre)    #libre를 문자형으로 변환.
libre    #결과를 확인해보면 libre가 문자형인 "3"의 값을 갖는 것을 확인할 수 있다.
is.character(libre)
#이 함수를 이용하여 libre가 문자형인지 아닌지 확인할 수 있다. character 자리에 다른 데이터형을 넣어서 확인해볼 수 있다.
</syntaxhighlight>
 
데이터가 저장될 땐 위의 데이터 기본형과는 미묘하게 다르게 분류된다는 점은 유의할 것.
 
====R의 데이터 구조====
위와 마찬가지로 R에서는 데이터의 구조에 따라 처리하는 방식이 다르기 때문에 데이터의 구조에 대해서도 숙지해둘 필요가 있다.
=====벡터=====
하나 이상의 수치값, 문자값, 논리값 등으로 구성되는 데이터 구조다. 데이터의 수열, 혹은 데이터의 나열로 고등학교 수학시간에 배우는 수열과 유사한 개념이다. 벡터는 숫자, 문자, 논리값 중 한 가지만으로 구성할 수 있으며 여러 데이터 기본형을 섞어서 벡터를 만들 수는 없다.
 
벡터를 생성하고 합칠 때는 c()함수를 이용한다.<ref>c함수는 벡터 외에도 리스트나 다른 데이터 구조에도 적용 가능하다. 항상 벡터를 생성하는 함수가 아님에 유의.</ref>


<syntaxhighlight lang="Rsplus">
ridibug.a<-3
is.vector(ridibug.a) #출력값은 TRUE. 단일한 값도 벡터로 처리함을 알 수 있다. 벡터는 R에서 가장 기본이 되는 데이터 구조다.
ridibug.b<-c(3,5,7) #이렇게 값을 일일이 입력하여 벡터를 생성할 수 있다.
#값을 직접 입력하는 대신 seq()함수나 rep()함수를 이용하여 벡터를 생성할 수도 있다.
ridibug<-c(ridibug.a,ridibug.b) #c()함수를 이용하여 서로 다른 두 벡터를 결합하여 새 벡터를 생성할 수도 있다.
</syntaxhighlight>
서로 다른 데이터 형태를 이용하여 벡터를 생성하면 R은 자동으로 모든 원소를 같은 데이터 형태로 변환해 벡터를 만든다.
<syntaxhighlight lang="Rsplus">
#맨 위의 예제에서부터 이어짐. 모든 예제를 돌려 객체를 생성한 후 밑에 코드를 돌리기 바람.
libra<-c(ridibug,libre)
libra #벡터 내 모든 데이터가 character로 변환되었다.
</syntaxhighlight>
벡터 내 원소의 개수는 벡터의 길이(length)가 되고, 원소의 데이터 기본형이 벡터의 데이터 기본형(mode)이 된다. mode()함수를 이용해 벡터의 기본형을 확인할 수 있으며 length() 함수를 이용해 벡터의 길이, 즉 벡터 내 원소의 개수를 확인할 수 있다.
=====Array=====
=====데이터프레임=====
===작업공간 설정하기===
====작업공간이란?====
====현재 상태 확인하기====
작업 공간에 어떤 변수와 함수가 정의되어있는지 알고 싶다면 ls함수를 사용하면 된다. 이 함수를 사용할 경우 변수의 이름만 확인할 수 있다. ls.str() 함수를 이용하면 자세한 정보를 알 수 있다.
<syntaxhighlight lang="Rsplus">
ls() #작업공간에 정의된 변수가 있다면 해당 변수가 출력될 거고, 없다면 character(0)이란 결과값이 출력될 것이다.
ls.str()
</syntaxhighlight>
당연히 정의된 변수를 제거할 수도 있다. rm()함수를 이용하면 특정 객체를 작업공간에서 지정하여 제거하는 것도 가능하다. rm(list=ls())를 입력하면 작업 공간 내에 정의된 모든 변수를 제거할 수 있다.
<syntaxhighlight lang="Rsplus">
rm(libre, libra) #모든 예제의 코드를 돌렸다면, 이 함수를 이용해 libre와 libra 변수를 삭제할 수 있다.
ls() #libre와 libra가 출력되지 않음을 확인할 수 있다.
rm(list=ls()) ; ls() #작업 공간 내에 모든 변수가 지워졌음을 확인할 수 있다.
</syntaxhighlight>
==팁==
==팁==
===오류가 나는 이유===
===오류가 나는 이유===
111번째 줄: 35번째 줄:
*R의 기본 도움말 이용
*R의 기본 도움말 이용
help()함수나 함수 앞에 ?를 붙인 후 엔터를 누르면 함수에 대한 설명이 나온다.  연산기호에 대해 알고 싶다면 “”안에 넣어줘야 한다. 자세한 것은 아래의 예제를 참고할 것. 단, 설명이 다 [[영어]]라는 점과 어려운 함수일 수록 설명이 대충 써져 있을 확률이 높다는 것은 유의해야 한다.
help()함수나 함수 앞에 ?를 붙인 후 엔터를 누르면 함수에 대한 설명이 나온다.  연산기호에 대해 알고 싶다면 “”안에 넣어줘야 한다. 자세한 것은 아래의 예제를 참고할 것. 단, 설명이 다 [[영어]]라는 점과 어려운 함수일 수록 설명이 대충 써져 있을 확률이 높다는 것은 유의해야 한다.
<syntaxhighlight lang="Rsplus">
help(library)
help(library)
?library
?library
?"%*%"
?"%*%"
</syntaxhighlight>


*검색
*검색
122번째 줄: 44번째 줄:
===귀차니스트들을 위한 꿀팁===
===귀차니스트들을 위한 꿀팁===
*R에는 Built-in Constant라는 것이 존재한다.
*R에는 Built-in Constant라는 것이 존재한다.
<syntaxhighlight lang="Rsplus">
 
  LETTERS
  LETTERS
  letters
  letters
128번째 줄: 50번째 줄:
  month.name
  month.name
  pi
  pi
</syntaxhighlight>
 
다음과 같은데 글자 계속 반복해서 쓰기 귀찮을 때, 월을 입력할 때, [[파이]]값을 가져다 쓸 때 편리하다.
다음과 같은데 글자 계속 반복해서 쓰기 귀찮을 때, 월을 입력할 때, [[파이]]값을 가져다 쓸 때 편리하다.


*미리 저장된 데이터도 있다. 'data()'함수로 전부 확인 가능. R 연습을 위해 따로 데이터를 마련할 필요 없이 내장된 데이터를 가져다쓰면 된다.
*미리 저장된 데이터도 있다. 'data()'함수로 전부 확인 가능. R 연습을 위해 따로 데이터를 마련할 필요 없이 내장된 데이터를 가져다쓰면 된다.
*바깥에 괄호 표시를 해두면 이름을 지정하는 동시에 콘솔창에 출력도 가능하다.
*바깥에 괄호 표시를 해두면 이름을 지정하는 동시에 콘솔창에 출력도 가능하다.
<syntaxhighlight lang="Rsplus">
 
  (Abs<-Letters[1:3])
  (Abs<-Letters[1:3])
</syntaxhighlight>
 
*엔터 치기 귀찮으면 세미콜론(;)으로 구분해도 된다.
*엔터 치기 귀찮으면 세미콜론(;)으로 구분해도 된다.
<syntaxhighlight lang="Rsplus">
 
  3+4 ; (libren<-"yellow")
  3+4 ; (libren<-"yellow")
</syntaxhighlight>
 
*attach() 함수를 이용하면 굳이 dataframe$col.1 이런 식으로 표현할 필요 없이 col.1만 써도 소환이 가능하다. 다 쓰고 detach()를 해주는 것이 좋다.
*attach() 함수를 이용하면 굳이 dataframe$col.1 이런 식으로 표현할 필요 없이 col.1만 써도 소환이 가능하다. 다 쓰고 detach()를 해주는 것이 좋다.
<syntaxhighlight lang="Rsplus">
 
  attach(iris)
  attach(iris)
  Species[3]
  Species[3]
  detach(iris)
  detach(iris)
</syntaxhighlight>
 
*scientific notation을 해제하고 싶다면
*scientific notation을 해제하고 싶다면
<syntaxhighlight lang="Rsplus">
 
  options(scipen=999)
  options(scipen=999)
</syntaxhighlight>
 
을 이용하면 된다. 원상복구는 options(scipen=0)을 입력하거나 R을 껐다 켜도 된다.
을 이용하면 된다. 원상복구는 options(scipen=0)을 입력하거나 R을 껐다 켜도 된다.
{{주석}}
{{주석}}
{{리브레 시리즈}}
[[분류:프로그래밍 시리즈]]
리브레 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0 라이선스로 배포됩니다(자세한 내용에 대해서는 리브레 위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
글이 직접 작성되었거나 호환되는 라이선스인지 확인해주세요. 리그베다 위키, 나무위키, 오리위키, 구스위키, 디시위키 및 CCL 미적용 사이트 등에서 글을 가져오실 때는 본인이 문서의 유일한 기여자여야 하고, 만약 본인이 문서의 유일한 기여자라는 증거가 없다면 그 문서는 불시에 삭제될 수 있습니다.
취소 편집 도움말 (새 창에서 열림)

| () [] [[]] {{}} {{{}}} · <!-- --> · [[분류:]] · [[파일:]] · [[미디어:]] · #넘겨주기 [[]] · {{ㅊ|}} · <onlyinclude></onlyinclude> · <includeonly></includeonly> · <noinclude></noinclude> · <br /> · <ref></ref> · {{각주}} · {|class="wikitable" · |- · rowspan=""| · colspan=""| · |}