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

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

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

최신판 당신의 편집
1번째 줄: 1번째 줄:
{{:시리즈:쉽게 배우는 프로그래밍 입문}}
{{쉽게 알 수 있다 시리즈|이 문서는 정마R 쉽습니다.|문서의 내용이 너무 쉬워서 머리속에 쏙쏙 드R어옵니다.}}
 
==R이란?==
==R이란?==
[[R (프로그래밍 언어)]] 항목을 참고. 요약하자면 R은 통계 분석 및 관련 프로그래밍에 최적화된 [[프로그래밍 언어]], 또는 R을 이용하여 통계 및 기타 작업을 하는 [[소프트웨어]]를 의미한다.
[[R (프로그래밍 언어)]] 항목을 참고. 요약하자면 R은 통계 분석 및 관련 프로그래밍에 최적화된 [[프로그래밍 언어]], 또는 R을 이용하여 통계 및 기타 작업을 하는 [[소프트웨어]]를 의미한다.
9번째 줄: 8번째 줄:
프로그램도 가벼운 편. 비교적 컴퓨터 성능에 영향을 받지 않고 데이터를 빨리 처리해준다.
프로그램도 가벼운 편. 비교적 컴퓨터 성능에 영향을 받지 않고 데이터를 빨리 처리해준다.


여담이지만 R을 충실히 해둔다면 유사한 형태의 객체지향형 [[프로그래밍 언어]]를 익힐 때 정말 유리하다. for문까지 익히고 가면 [[시리즈:쉽게 배우는 프로그래밍 입문]] 항목을 어느 정도 이해할 수 있다!  
여담이지만 R을 충실히 해둔다면 유사한 형태의 객체지향형 [[프로그래밍 언어]]를 익힐 때 정말 유리하다. for문까지 익히고 가면 [[쉬운 프로그래밍]] 항목을 어느 정도 이해할 수 있다!  


===R을 이용하면 안 되는 이유===
===R을 이용하면 안 되는 이유===
25번째 줄: 24번째 줄:
본 문서는 R의 기본적인 문법 구조를 이해하고 데이터를 입력하고 출력하고 간단한 산수를 하는 것을 목표로 하고 있다. [[엑셀]]을 비롯한 다른 통계 프로그램을 이용하면 10분이면 끝날 일을 엄청난 공을 들여 하게 될 것이다.(...)
본 문서는 R의 기본적인 문법 구조를 이해하고 데이터를 입력하고 출력하고 간단한 산수를 하는 것을 목표로 하고 있다. [[엑셀]]을 비롯한 다른 통계 프로그램을 이용하면 10분이면 끝날 일을 엄청난 공을 들여 하게 될 것이다.(...)


===R의 문법 구조===
==R의 문법 구조==
이 문서는 R 언어에 대한 설명과 예제로 이루어져 있다. 박스 안의 예제는 처음부터 끝까지 그대로 복사해서 R 스크립트, 혹은 명령 프롬프트에 붙여넣고 {{키|Enter}}를 누르면 결과값이 출력되는 것을 볼 수 있다.
이 문서는 R 언어에 대한 설명과 예제로 이루어져 있다. 박스 안의 예제는 처음부터 끝까지 그대로 복사해서 R 스크립트, 혹은 명령 프롬프트에 붙여넣고 엔터키를 누르면 결과값이 출력되는 것을 볼 수 있다.


====시작====
===시작===
R의 모든 것은 객체(object)다. 함수, 연산자, 변수 모두. 객체의 종류에 대해서는 R의 데이터 기본형 항목을 참고하면 좋다.
R의 모든 것은 객체(object)다. 함수, 연산자, 변수 모두. 객체의 종류에 대해서는 R의 데이터 기본형 항목을 참고하면 좋다.


화살표와 등호를 이용하여 객체에 값을 부여하여 객체를 생성할 수 있다. 아래는 3의 값을 갖는 libre라는 객체를 생성하는 R 코드다.
화살표와 등호를 이용하여 객체에 값을 부여하여 객체를 생성할 수 있다. 아래는 3의 값을 갖는 libre라는 객체를 생성하는 R 코드다.
<syntaxhighlight lang="Rsplus">
<source lang="Rsplus">
libre<-3      # libre=3 을 대신 입력해도 된다.
libre<-3      # libre=3 을 대신 입력해도 된다.
libre      #이제 libre를 호출하면 3이라는 값이 호출된다.
libre      #이제 libre를 호출하면 3이라는 값이 호출된다.
</syntaxhighlight>
</source>


====R의 데이터 기본형====
===R의 데이터 기본형===
R은 데이터를 처리할 때 데이터를 기본형에 따라 서로 다르게 분류하여 처리한다. 데이터 기본형에 대한 이해 없이 코드를 입력하면 오류가 날 가능성이 매우 높다. R에서 자주 쓰이는 데이터 기본형은 다음과 같다.  
R은 데이터를 처리할 때 데이터를 기본형에 따라 서로 다르게 분류하여 처리한다. 데이터 기본형에 대한 이해 없이 코드를 입력하면 오류가 날 가능성이 매우 높다. R에서 자주 쓰이는 데이터 기본형은 다음과 같다.  
#numeric(수치형) : 정수 및 실수. 우리가 흔히 생각하는 실수의 개념과 거의 일치한다. 실수로 구성된 벡터도 numeric에 포함된다.
#numeric(수치형) : 정수 및 실수. 우리가 흔히 생각하는 실수의 개념과 거의 일치한다. 실수로 구성된 벡터도 numeric에 포함된다.
48번째 줄: 47번째 줄:
mode()함수를 통해 기본형을 확인할 수 있으며 as.~() 함수를 이용해 데이터의 형태를 변환하는 것도 가능하다. as.XXXX(libre)에서 XXXX자리에 원하는 데이터 기본형을 입력하면 입력한 기본형의 형태로 변환된다. 단 항상 변환되는 것은 아니다.  
mode()함수를 통해 기본형을 확인할 수 있으며 as.~() 함수를 이용해 데이터의 형태를 변환하는 것도 가능하다. as.XXXX(libre)에서 XXXX자리에 원하는 데이터 기본형을 입력하면 입력한 기본형의 형태로 변환된다. 단 항상 변환되는 것은 아니다.  


<syntaxhighlight lang="Rsplus">
<source lang="Rsplus">
mode(libre)    #위에서 생성한 libre의 기본형을 알 수 있다. libre의 기본형은 수치형이다.
mode(libre)    #위에서 생성한 libre의 기본형을 알 수 있다. libre의 기본형은 수치형이다.
libre<-as.character(libre)    #libre를 문자형으로 변환.  
libre<-as.character(libre)    #libre를 문자형으로 변환.  
54번째 줄: 53번째 줄:
is.character(libre)  
is.character(libre)  
#이 함수를 이용하여 libre가 문자형인지 아닌지 확인할 수 있다. character 자리에 다른 데이터형을 넣어서 확인해볼 수 있다.
#이 함수를 이용하여 libre가 문자형인지 아닌지 확인할 수 있다. character 자리에 다른 데이터형을 넣어서 확인해볼 수 있다.
</syntaxhighlight>
</source>


데이터가 저장될 땐 위의 데이터 기본형과는 미묘하게 다르게 분류된다는 점은 유의할 것.
데이터가 저장될 땐 위의 데이터 기본형과는 미묘하게 다르게 분류된다는 점은 유의할 것.


====R의 데이터 구조====
===R의 데이터 구조===
위와 마찬가지로 R에서는 데이터의 구조에 따라 처리하는 방식이 다르기 때문에 데이터의 구조에 대해서도 숙지해둘 필요가 있다.
위와 마찬가지로 R에서는 데이터의 구조에 따라 처리하는 방식이 다르기 때문에 데이터의 구조에 대해서도 숙지해둘 필요가 있다.
=====벡터=====
===벡터===
하나 이상의 수치값, 문자값, 논리값 등으로 구성되는 데이터 구조다. 데이터의 수열, 혹은 데이터의 나열로 고등학교 수학시간에 배우는 수열과 유사한 개념이다. 벡터는 숫자, 문자, 논리값 중 한 가지만으로 구성할 수 있으며 여러 데이터 기본형을 섞어서 벡터를 만들 수는 없다.
데이터의 수열, 혹은 데이터의 나열. 수열과 유사한 개념이다. 벡터는 숫자, 문자, 논리값 중 한 가지만으로 구성할 수 있으며 여러 데이터 기본형을 섞어서 벡터를 만들 수는 없다.


벡터를 생성하고 합칠 때는 c()함수를 이용한다.<ref>c함수는 벡터 외에도 리스트나 다른 데이터 구조에도 적용 가능하다. 항상 벡터를 생성하는 함수가 아님에 유의.</ref>
벡터를 생성하고 합칠 때는 c()함수를 이용한다.<ref>c함수는 벡터 외에도 리스트나 다른 데이터 구조에도 적용 가능하다. 항상 벡터를 생성하는 함수가 아님에 유의.<ref>


<syntaxhighlight lang="Rsplus">
<source lang="Rsplus">
ridibug.a<-3
ridibug.a<-3
is.vector(ridibug.a) #출력값은 TRUE. 단일한 값도 벡터로 처리함을 알 수 있다. 벡터는 R에서 가장 기본이 되는 데이터 구조다.
is.vector(ridibug.a) #출력값은 TRUE. 단일한 값도 벡터로 처리함을 알 수 있다. 벡터는 R에서 가장 기본이 되는 데이터 구조다.
71번째 줄: 70번째 줄:
#값을 직접 입력하는 대신 seq()함수나 rep()함수를 이용하여 벡터를 생성할 수도 있다.
#값을 직접 입력하는 대신 seq()함수나 rep()함수를 이용하여 벡터를 생성할 수도 있다.
ridibug<-c(ridibug.a,ridibug.b) #c()함수를 이용하여 서로 다른 두 벡터를 결합하여 새 벡터를 생성할 수도 있다.
ridibug<-c(ridibug.a,ridibug.b) #c()함수를 이용하여 서로 다른 두 벡터를 결합하여 새 벡터를 생성할 수도 있다.
</syntaxhighlight>
</source>


서로 다른 데이터 형태를 이용하여 벡터를 생성하면 R은 자동으로 모든 원소를 같은 데이터 형태로 변환해 벡터를 만든다.
서로 다른 데이터 형태를 이용하여 벡터를 생성하면 R은 자동으로 모든 원소를 같은 데이터 형태로 변환해 벡터를 만든다.
<syntaxhighlight lang="Rsplus">
<source lang="Rsplus">
#맨 위의 예제에서부터 이어짐. 모든 예제를 돌려 객체를 생성한 후 밑에 코드를 돌리기 바람.
#맨 위의 예제에서부터 이어짐. 모든 예제를 돌려 객체를 생성한 후 밑에 코드를 돌리기 바람.
libra<-c(ridibug,libre)
libra<-(ridibug,libre)
libra #벡터 내 모든 데이터가 character로 변환되었다.
libra #벡터 내 모든 데이터가 character로 변환되었다.
</syntaxhighlight>
</source>
 
===Array===
벡터 내 원소의 개수는 벡터의 길이(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번째 줄: 93번째 줄:
*R의 기본 도움말 이용
*R의 기본 도움말 이용
help()함수나 함수 앞에 ?를 붙인 후 엔터를 누르면 함수에 대한 설명이 나온다.  연산기호에 대해 알고 싶다면 “”안에 넣어줘야 한다. 자세한 것은 아래의 예제를 참고할 것. 단, 설명이 다 [[영어]]라는 점과 어려운 함수일 수록 설명이 대충 써져 있을 확률이 높다는 것은 유의해야 한다.
help()함수나 함수 앞에 ?를 붙인 후 엔터를 누르면 함수에 대한 설명이 나온다.  연산기호에 대해 알고 싶다면 “”안에 넣어줘야 한다. 자세한 것은 아래의 예제를 참고할 것. 단, 설명이 다 [[영어]]라는 점과 어려운 함수일 수록 설명이 대충 써져 있을 확률이 높다는 것은 유의해야 한다.
<syntaxhighlight lang="Rsplus">
<source lang="Rsplus">
help(library)
help(library)
?library
?library
?"%*%"
?"%*%"
</syntaxhighlight>
</source>


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


*미리 저장된 데이터도 있다. 'data()'함수로 전부 확인 가능. R 연습을 위해 따로 데이터를 마련할 필요 없이 내장된 데이터를 가져다쓰면 된다.
*미리 저장된 데이터도 있다. 'data()'함수로 전부 확인 가능. R 연습을 위해 따로 데이터를 마련할 필요 없이 내장된 데이터를 가져다쓰면 된다.
*바깥에 괄호 표시를 해두면 이름을 지정하는 동시에 콘솔창에 출력도 가능하다.
*바깥에 괄호 표시를 해두면 이름을 지정하는 동시에 콘솔창에 출력도 가능하다.
<syntaxhighlight lang="Rsplus">
<source lang="Rsplus">
  (Abs<-Letters[1:3])
  (Abs<-Letters[1:3])
</syntaxhighlight>
</source>
*엔터 치기 귀찮으면 세미콜론(;)으로 구분해도 된다.
*엔터 치기 귀찮으면 세미콜론(;)으로 구분해도 된다.
<syntaxhighlight lang="Rsplus">
<source lang="Rsplus">
  3+4 ; (libren<-"yellow")
  3+4 ; (libren<-"yellow")
</syntaxhighlight>
</source>
*attach() 함수를 이용하면 굳이 dataframe$col.1 이런 식으로 표현할 필요 없이 col.1만 써도 소환이 가능하다. 다 쓰고 detach()를 해주는 것이 좋다.
*attach() 함수를 이용하면 굳이 dataframe$col.1 이런 식으로 표현할 필요 없이 col.1만 써도 소환이 가능하다. 다 쓰고 detach()를 해주는 것이 좋다.
<syntaxhighlight lang="Rsplus">
<source lang="Rsplus">
  attach(iris)
  attach(iris)
  Species[3]
  Species[3]
  detach(iris)
  detach(iris)
</syntaxhighlight>
</source>
*scientific notation을 해제하고 싶다면
*scientific notation을 해제하고 싶다면
<syntaxhighlight lang="Rsplus">
<source lang="Rsplus">
  options(scipen=999)
  options(scipen=999)
</syntaxhighlight>
</source>
을 이용하면 된다. 원상복구는 options(scipen=0)을 입력하거나 R을 껐다 켜도 된다.
을 이용하면 된다. 원상복구는 options(scipen=0)을 입력하거나 R을 껐다 켜도 된다.


156번째 줄: 138번째 줄:
{{리브레 시리즈}}
{{리브레 시리즈}}


[[분류:프로그래밍 시리즈]]
[[분류:쉽게 알 수 있다 시리즈]] [[분류:프로그래밍 언어]]
리브레 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0 라이선스로 배포됩니다(자세한 내용에 대해서는 리브레 위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
글이 직접 작성되었거나 호환되는 라이선스인지 확인해주세요. 리그베다 위키, 나무위키, 오리위키, 구스위키, 디시위키 및 CCL 미적용 사이트 등에서 글을 가져오실 때는 본인이 문서의 유일한 기여자여야 하고, 만약 본인이 문서의 유일한 기여자라는 증거가 없다면 그 문서는 불시에 삭제될 수 있습니다.
취소 편집 도움말 (새 창에서 열림)

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