편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
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 언어에 대한 설명과 예제로 이루어져 있다. 박스 안의 예제는 처음부터 끝까지 그대로 복사해서 R 스크립트, 혹은 명령 프롬프트에 붙여넣고 엔터키를 누르면 결과값이 출력되는 것을 볼 수 있다. | ||
===시작=== | |||
R의 모든 것은 객체(object)다. 함수, 연산자, 변수 모두. 객체의 종류에 대해서는 R의 데이터 기본형 항목을 참고하면 좋다. | R의 모든 것은 객체(object)다. 함수, 연산자, 변수 모두. 객체의 종류에 대해서는 R의 데이터 기본형 항목을 참고하면 좋다. | ||
화살표와 등호를 이용하여 객체에 값을 부여하여 객체를 생성할 수 있다. 아래는 3의 값을 갖는 libre라는 객체를 생성하는 R 코드다. | 화살표와 등호를 이용하여 객체에 값을 부여하여 객체를 생성할 수 있다. 아래는 3의 값을 갖는 libre라는 객체를 생성하는 R 코드다. | ||
< | <source lang="Rsplus"> | ||
libre<-3 # libre=3 을 대신 입력해도 된다. | libre<-3 # libre=3 을 대신 입력해도 된다. | ||
libre #이제 libre를 호출하면 3이라는 값이 호출된다. | libre #이제 libre를 호출하면 3이라는 값이 호출된다. | ||
</ | </source> | ||
===R의 데이터 기본형=== | |||
R은 데이터를 처리할 때 데이터를 기본형에 따라 서로 다르게 분류하여 처리한다. 데이터 기본형에 대한 이해 없이 코드를 입력하면 오류가 날 가능성이 매우 높다. R에서 자주 쓰이는 데이터 기본형은 다음과 같다. | R은 데이터를 처리할 때 데이터를 기본형에 따라 서로 다르게 분류하여 처리한다. 데이터 기본형에 대한 이해 없이 코드를 입력하면 오류가 날 가능성이 매우 높다. R에서 자주 쓰이는 데이터 기본형은 다음과 같다. | ||
#numeric(수치형) : 정수 및 실수. 우리가 흔히 생각하는 실수의 개념과 거의 일치한다. 실수로 구성된 벡터도 numeric에 포함된다. | #numeric(수치형) : 정수 및 실수. 우리가 흔히 생각하는 실수의 개념과 거의 일치한다. 실수로 구성된 벡터도 numeric에 포함된다. | ||
48번째 줄: | 47번째 줄: | ||
mode()함수를 통해 기본형을 확인할 수 있으며 as.~() 함수를 이용해 데이터의 형태를 변환하는 것도 가능하다. as.XXXX(libre)에서 XXXX자리에 원하는 데이터 기본형을 입력하면 입력한 기본형의 형태로 변환된다. 단 항상 변환되는 것은 아니다. | mode()함수를 통해 기본형을 확인할 수 있으며 as.~() 함수를 이용해 데이터의 형태를 변환하는 것도 가능하다. as.XXXX(libre)에서 XXXX자리에 원하는 데이터 기본형을 입력하면 입력한 기본형의 형태로 변환된다. 단 항상 변환되는 것은 아니다. | ||
< | <source lang="Rsplus"> | ||
mode(libre) #위에서 생성한 libre의 기본형을 알 수 있다. libre의 기본형은 수치형이다. | mode(libre) #위에서 생성한 libre의 기본형을 알 수 있다. libre의 기본형은 수치형이다. | ||
as.character(libre) #libre를 문자형으로 변환. | |||
libre #결과를 확인해보면 libre가 문자형인 "3"의 값을 갖는 것을 확인할 수 있다. | libre #결과를 확인해보면 libre가 문자형인 "3"의 값을 갖는 것을 확인할 수 있다. | ||
is.character(libre) | is.character(libre) | ||
#이 함수를 이용하여 libre가 문자형인지 아닌지 확인할 수 있다. character 자리에 다른 데이터형을 넣어서 확인해볼 수 있다. | #이 함수를 이용하여 libre가 문자형인지 아닌지 확인할 수 있다. character 자리에 다른 데이터형을 넣어서 확인해볼 수 있다. | ||
</ | </source> | ||
데이터가 저장될 땐 위의 데이터 기본형과는 미묘하게 다르게 분류된다는 점은 유의할 것. | 데이터가 저장될 땐 위의 데이터 기본형과는 미묘하게 다르게 분류된다는 점은 유의할 것. | ||
===R의 데이터 구조=== | |||
위와 마찬가지로 R에서는 데이터의 구조에 따라 처리하는 방식이 다르기 때문에 데이터의 구조에 대해서도 숙지해둘 필요가 있다. | 위와 마찬가지로 R에서는 데이터의 구조에 따라 처리하는 방식이 다르기 때문에 데이터의 구조에 대해서도 숙지해둘 필요가 있다. | ||
===벡터=== | |||
데이터의 수열, 혹은 데이터의 나열. 수열과 유사한 개념이다. 벡터는 숫자, 문자, 논리값 중 한 가지만으로 구성할 수 있으며 여러 데이터 기본형을 섞어서 벡터를 만들 수는 없다. | |||
벡터를 생성하고 합칠 때는 c()함수를 이용한다.<ref>c함수는 벡터 외에도 리스트나 다른 데이터 구조에도 적용 가능하다. 항상 벡터를 생성하는 함수가 아님에 유의.< | 벡터를 생성하고 합칠 때는 c()함수를 이용한다.<ref>c함수는 벡터 외에도 리스트나 다른 데이터 구조에도 적용 가능하다. 항상 벡터를 생성하는 함수가 아님에 유의.<ref> | ||
< | <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()함수를 이용하여 서로 다른 두 벡터를 결합하여 새 벡터를 생성할 수도 있다. | ||
</ | </source> | ||
서로 다른 데이터 형태를 이용하여 벡터를 생성하면 R은 자동으로 모든 원소를 같은 데이터 형태로 변환해 벡터를 만든다. | 서로 다른 데이터 형태를 이용하여 벡터를 생성하면 R은 자동으로 모든 원소를 같은 데이터 형태로 변환해 벡터를 만든다. | ||
< | <source lang="Rsplus"> | ||
#맨 위의 예제에서부터 이어짐. 모든 예제를 돌려 객체를 생성한 후 밑에 코드를 돌리기 바람. | #맨 위의 예제에서부터 이어짐. 모든 예제를 돌려 객체를 생성한 후 밑에 코드를 돌리기 바람. | ||
libra<- | libra<-(ridibug,libre) | ||
libra #벡터 내 모든 데이터가 character로 변환되었다. | libra #벡터 내 모든 데이터가 character로 변환되었다. | ||
</ | </source> | ||
===Array=== | |||
===데이터프레임=== | |||
==팁== | ==팁== | ||
===오류가 나는 이유=== | ===오류가 나는 이유=== | ||
111번째 줄: | 93번째 줄: | ||
*R의 기본 도움말 이용 | *R의 기본 도움말 이용 | ||
help()함수나 함수 앞에 ?를 붙인 후 엔터를 누르면 함수에 대한 설명이 나온다. 연산기호에 대해 알고 싶다면 “”안에 넣어줘야 한다. 자세한 것은 아래의 예제를 참고할 것. 단, 설명이 다 [[영어]]라는 점과 어려운 함수일 수록 설명이 대충 써져 있을 확률이 높다는 것은 유의해야 한다. | help()함수나 함수 앞에 ?를 붙인 후 엔터를 누르면 함수에 대한 설명이 나온다. 연산기호에 대해 알고 싶다면 “”안에 넣어줘야 한다. 자세한 것은 아래의 예제를 참고할 것. 단, 설명이 다 [[영어]]라는 점과 어려운 함수일 수록 설명이 대충 써져 있을 확률이 높다는 것은 유의해야 한다. | ||
< | <source lang="Rsplus"> | ||
help(library) | help(library) | ||
?library | ?library | ||
?"%*%" | ?"%*%" | ||
</ | </source> | ||
*검색 | *검색 | ||
122번째 줄: | 104번째 줄: | ||
===귀차니스트들을 위한 꿀팁=== | ===귀차니스트들을 위한 꿀팁=== | ||
*R에는 Built-in Constant라는 것이 존재한다. | *R에는 Built-in Constant라는 것이 존재한다. | ||
< | <source lang="Rsplus"> | ||
LETTERS | LETTERS | ||
letters | letters | ||
128번째 줄: | 110번째 줄: | ||
month.name | month.name | ||
pi | pi | ||
</ | </source> | ||
다음과 같은데 글자 계속 반복해서 쓰기 귀찮을 때, 월을 입력할 때, [[파이]]값을 가져다 쓸 때 편리하다. | 다음과 같은데 글자 계속 반복해서 쓰기 귀찮을 때, 월을 입력할 때, [[파이]]값을 가져다 쓸 때 편리하다. | ||
*미리 저장된 데이터도 있다. 'data()'함수로 전부 확인 가능. R 연습을 위해 따로 데이터를 마련할 필요 없이 내장된 데이터를 가져다쓰면 된다. | *미리 저장된 데이터도 있다. 'data()'함수로 전부 확인 가능. R 연습을 위해 따로 데이터를 마련할 필요 없이 내장된 데이터를 가져다쓰면 된다. | ||
*바깥에 괄호 표시를 해두면 이름을 지정하는 동시에 콘솔창에 출력도 가능하다. | *바깥에 괄호 표시를 해두면 이름을 지정하는 동시에 콘솔창에 출력도 가능하다. | ||
< | <source lang="Rsplus"> | ||
(Abs<-Letters[1:3]) | (Abs<-Letters[1:3]) | ||
</ | </source> | ||
*엔터 치기 귀찮으면 세미콜론(;)으로 구분해도 된다. | *엔터 치기 귀찮으면 세미콜론(;)으로 구분해도 된다. | ||
< | <source lang="Rsplus"> | ||
3+4 ; (libren<-"yellow") | 3+4 ; (libren<-"yellow") | ||
</ | </source> | ||
*attach() 함수를 이용하면 굳이 dataframe$col.1 이런 식으로 표현할 필요 없이 col.1만 써도 소환이 가능하다. 다 쓰고 detach()를 해주는 것이 좋다. | *attach() 함수를 이용하면 굳이 dataframe$col.1 이런 식으로 표현할 필요 없이 col.1만 써도 소환이 가능하다. 다 쓰고 detach()를 해주는 것이 좋다. | ||
< | <source lang="Rsplus"> | ||
attach(iris) | attach(iris) | ||
Species[3] | Species[3] | ||
detach(iris) | detach(iris) | ||
</ | </source> | ||
*scientific notation을 해제하고 싶다면 | *scientific notation을 해제하고 싶다면 | ||
< | <source lang="Rsplus"> | ||
options(scipen=999) | options(scipen=999) | ||
</ | </source> | ||
을 이용하면 된다. 원상복구는 options(scipen=0)을 입력하거나 R을 껐다 켜도 된다. | 을 이용하면 된다. 원상복구는 options(scipen=0)을 입력하거나 R을 껐다 켜도 된다. | ||
156번째 줄: | 138번째 줄: | ||
{{리브레 시리즈}} | {{리브레 시리즈}} | ||
[[분류:프로그래밍 | [[분류:쉽게 알 수 있다 시리즈]] [[분류:프로그래밍 언어]] |