경고 : 최신판이 아닙니다. 이 문서의 오래된 판을 편집하고 있습니다. 이것을 저장하면, 이 판 이후로 바뀐 모든 편집이 사라집니다. 로그인하고 있지 않습니다. 편집하면 당신의 IP 주소가 공개적으로 기록됩니다. 계정을 만들고 로그인하면 편집 시 사용자 이름만 보이며, 위키 이용에 여러 가지 편의가 주어집니다.스팸 방지 검사입니다. 이것을 입력하지 마세요!{{쉽게 알 수 있다 시리즈|이 문서는 정마R 쉽습니다.|문서의 내용이 너무 쉬워서 머리속에 쏙쏙 드R어옵니다.}} ==R이란?== [[R (프로그래밍 언어)]] 항목을 참고. 요약하자면 R은 통계 분석 및 관련 프로그래밍에 최적화된 [[프로그래밍 언어]], 또는 R을 이용하여 통계 및 기타 작업을 하는 [[소프트웨어]]를 의미한다. ===R을 이용해야 되는 이유=== 자유도가 높다. 다른 프로그램들이 일반적인 RPG 게임 정도의 자유도를 보여준다면 R은 [[스카이림]]과 맞먹는 자유도를 보여준다. 더불어 기능을 확장하여 쓸 수 있는 패키지{{ㅊ|확장팩}}가 무지하게 많기 때문에 다양한 작업이 가능하다. 또한 무료이기 때문에 [[기업]]에서도 많이 쓴다. 프로그램도 가벼운 편. 비교적 컴퓨터 성능에 영향을 받지 않고 데이터를 빨리 처리해준다. 여담이지만 R을 충실히 해둔다면 유사한 형태의 객체지향형 [[프로그래밍 언어]]를 익힐 때 정말 유리하다. for문까지 익히고 가면 [[쉬운 프로그래밍]] 항목을 어느 정도 이해할 수 있다! ===R을 이용하면 안 되는 이유=== {{ㅊ|도망쳐!}} 학부생 수준에서는 보통 [[R (프로그래밍 언어)|R]]을 쓸 필요가 없다. 일반 상용 소프트웨어를 이용하는 것이 훨씬 편리하고 쉬우며 결과도 잘 나올 가능성이 높다. 세상에는 [[엑셀|EXCEL]], Eviews, SPSS, SAS, STATA, MATLAB 같은 좋은 프로그램들이 많으며 R을 제대로 익히는 것보다 앞의 프로그램들을 전부 익히는 것이 빠를지도 모른다! 앞의 프로그램들이 유료라서 부담이 된다면 [[gretl]]이란 프로그램을 이용해도 된다.<ref>단 간단한 회귀분석만 지원하며 데이터 처리의 정확도가 앞의 프로그램들보단 떨어진다.</ref> 통계 분석에 R을 이용하기 위해선 R의 프로그래밍 언어를 익혀야 되기 때문에 R의 사용법을 익히는 것은 다른 소프트웨어를 배우는 것에 비해 훨씬 더 어렵다. 시간을 많이 투자해도 생각한 만큼 결과가 잘 나오지 않을지도 모른다. ==설치 및 환경 설정== [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의 [[확장팩]]이라고도 할 수 있는 패키지의 설치 방법은 후술. ==R을 써보자== 본 문서는 R의 기본적인 문법 구조를 이해하고 데이터를 입력하고 출력하고 간단한 산수를 하는 것을 목표로 하고 있다. [[엑셀]]을 비롯한 다른 통계 프로그램을 이용하면 10분이면 끝날 일을 엄청난 공을 들여 하게 될 것이다.(...) ==R의 문법 구조== 이 문서는 R 언어에 대한 설명과 예제로 이루어져 있다. 박스 안의 예제는 처음부터 끝까지 그대로 복사해서 R 스크립트, 혹은 명령 프롬프트에 붙여넣고 엔터키를 누르면 결과값이 출력되는 것을 볼 수 있다. ===시작=== R의 모든 것은 객체(object)다. 함수, 연산자, 변수 모두. 객체의 종류에 대해서는 R의 데이터 기본형 항목을 참고하면 좋다. 화살표와 등호를 이용하여 객체에 값을 부여하여 객체를 생성할 수 있다. 아래는 3의 값을 갖는 libre라는 객체를 생성하는 R 코드다. <source lang="Rsplus"> libre<-3 # libre=3 을 대신 입력해도 된다. libre #이제 libre를 호출하면 3이라는 값이 호출된다. </source> ===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자리에 원하는 데이터 기본형을 입력하면 입력한 기본형의 형태로 변환된다. 단 항상 변환되는 것은 아니다. <source lang="Rsplus"> mode(libre) #위에서 생성한 libre의 기본형을 알 수 있다. libre의 기본형은 수치형이다. libre<-as.character(libre) #libre를 문자형으로 변환. libre #결과를 확인해보면 libre가 문자형인 "3"의 값을 갖는 것을 확인할 수 있다. is.character(libre) #이 함수를 이용하여 libre가 문자형인지 아닌지 확인할 수 있다. character 자리에 다른 데이터형을 넣어서 확인해볼 수 있다. </source> 데이터가 저장될 땐 위의 데이터 기본형과는 미묘하게 다르게 분류된다는 점은 유의할 것. ===R의 데이터 구조=== 위와 마찬가지로 R에서는 데이터의 구조에 따라 처리하는 방식이 다르기 때문에 데이터의 구조에 대해서도 숙지해둘 필요가 있다. ===벡터=== 데이터의 수열, 혹은 데이터의 나열. 수열과 유사한 개념이다. 벡터는 숫자, 문자, 논리값 중 한 가지만으로 구성할 수 있으며 여러 데이터 기본형을 섞어서 벡터를 만들 수는 없다. 벡터를 생성하고 합칠 때는 c()함수를 이용한다.<ref>c함수는 벡터 외에도 리스트나 다른 데이터 구조에도 적용 가능하다. 항상 벡터를 생성하는 함수가 아님에 유의.</ref> <source 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()함수를 이용하여 서로 다른 두 벡터를 결합하여 새 벡터를 생성할 수도 있다. </source> 서로 다른 데이터 형태를 이용하여 벡터를 생성하면 R은 자동으로 모든 원소를 같은 데이터 형태로 변환해 벡터를 만든다. <source lang="Rsplus"> #맨 위의 예제에서부터 이어짐. 모든 예제를 돌려 객체를 생성한 후 밑에 코드를 돌리기 바람. libra<-c(ridibug,libre) libra #벡터 내 모든 데이터가 character로 변환되었다. </source> ===Array=== ===데이터프레임=== ==팁== ===오류가 나는 이유=== 다른 [[프로그래밍 언어]]와 마찬가지로 R도 수많은 이유로 인해 오류가 나게 된다. 아래는 오류가 나게 만드는, 자주 할 법한 실수를 모아둔 것. #괄호를 제대로 쓰지 않아서. #대소문자 구분을 하지 않아서. #따옴표를 쓰지 않았거나 위치가 잘못 되어있어서. #잘못된 종류의 괄호 이용. #한국어보단 영어가 여러모로 에러가 날 가능성이 적다. '_' 대신 '.'를 자주 쓰는 것도 좋다. ===R을 이용하다 막힐 때=== *R의 기본 도움말 이용 help()함수나 함수 앞에 ?를 붙인 후 엔터를 누르면 함수에 대한 설명이 나온다. 연산기호에 대해 알고 싶다면 “”안에 넣어줘야 한다. 자세한 것은 아래의 예제를 참고할 것. 단, 설명이 다 [[영어]]라는 점과 어려운 함수일 수록 설명이 대충 써져 있을 확률이 높다는 것은 유의해야 한다. <source lang="Rsplus"> help(library) ?library ?"%*%" </source> *검색 R은 책보다 [[구글]] 검색을 통해 더 쉽게 더 나은 해결책을 찾을 수 있다. 단 영어로 검색해야 원하는 답변을 찾을 가능성이 높다. ===귀차니스트들을 위한 꿀팁=== *R에는 Built-in Constant라는 것이 존재한다. <source lang="Rsplus"> LETTERS letters month.abb month.name pi </source> 다음과 같은데 글자 계속 반복해서 쓰기 귀찮을 때, 월을 입력할 때, [[파이]]값을 가져다 쓸 때 편리하다. *미리 저장된 데이터도 있다. 'data()'함수로 전부 확인 가능. R 연습을 위해 따로 데이터를 마련할 필요 없이 내장된 데이터를 가져다쓰면 된다. *바깥에 괄호 표시를 해두면 이름을 지정하는 동시에 콘솔창에 출력도 가능하다. <source lang="Rsplus"> (Abs<-Letters[1:3]) </source> *엔터 치기 귀찮으면 세미콜론(;)으로 구분해도 된다. <source lang="Rsplus"> 3+4 ; (libren<-"yellow") </source> *attach() 함수를 이용하면 굳이 dataframe$col.1 이런 식으로 표현할 필요 없이 col.1만 써도 소환이 가능하다. 다 쓰고 detach()를 해주는 것이 좋다. <source lang="Rsplus"> attach(iris) Species[3] detach(iris) </source> *scientific notation을 해제하고 싶다면 <source lang="Rsplus"> options(scipen=999) </source> 을 이용하면 된다. 원상복구는 options(scipen=0)을 입력하거나 R을 껐다 켜도 된다. {{주석}} {{리브레 시리즈}} [[분류:쉽게 알 수 있다 시리즈]] [[분류:프로그래밍 언어]] 요약: 리브레 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0 라이선스로 배포됩니다(자세한 내용에 대해서는 리브레 위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요. 글이 직접 작성되었거나 호환되는 라이선스인지 확인해주세요. 리그베다 위키, 나무위키, 오리위키, 구스위키, 디시위키 및 CCL 미적용 사이트 등에서 글을 가져오실 때는 본인이 문서의 유일한 기여자여야 하고, 만약 본인이 문서의 유일한 기여자라는 증거가 없다면 그 문서는 불시에 삭제될 수 있습니다. 취소 편집 도움말 (새 창에서 열림) | () [] [[]] {{}} {{{}}} · <!-- --> · [[분류:]] · [[파일:]] · [[미디어:]] · #넘겨주기 [[]] · {{ㅊ|}} · <onlyinclude></onlyinclude> · <includeonly></includeonly> · <noinclude></noinclude> · <br /> · <ref></ref> · {{각주}} · {|class="wikitable" · |- · rowspan=""| · colspan=""| · |} {{lang|}} · {{llang||}} · {{인용문|}} · {{인용문2|}} · {{유튜브|}} · {{다음팟|}} · {{니코|}} · {{토막글}} {{삭제|}} · {{특정판삭제|}}(이유를 적지 않을 경우 기각될 가능성이 높습니다. 반드시 이유를 적어주세요.) {{#expr:}} · {{#if:}} · {{#ifeq:}} · {{#iferror:}} · {{#ifexist:}} · {{#switch:}} · {{#time:}} · {{#timel:}} · {{#titleparts:}} __NOTOC__ · __FORCETOC__ · __TOC__ · {{PAGENAME}} · {{SITENAME}} · {{localurl:}} · {{fullurl:}} · {{ns:}} –(대시) ‘’(작은따옴표) “”(큰따옴표) ·(가운뎃점) …(말줄임표) ‽(물음느낌표) 〈〉(홑화살괄호) 《》(겹화살괄호) ± − × ÷ ≈ ≠ ∓ ≤ ≥ ∞ ¬ ¹ ² ³ ⁿ ¼ ½ ¾ § € £ ₩ ¥ ¢ † ‡ • ← → ↔ ‰ °C µ(마이크로) Å °(도) ′(분) ″(초) Α α Β β Γ γ Δ δ Ε ε Ζ ζ Η η Θ θ Ι ι Κ κ Λ λ Μ μ(뮤) Ν ν Ξ ξ Ο ο Π π Ρ ρ Σ σ ς Τ τ Υ υ Φ φ Χ χ Ψ ψ Ω ω · Ά ά Έ έ Ή ή Ί ί Ό ό Ύ ύ Ώ ώ · Ϊ ϊ Ϋ ϋ · ΐ ΰ Æ æ Đ(D with stroke) đ Ð(eth) ð ı Ł ł Ø ø Œ œ ß Þ þ · Á á Ć ć É é Í í Ĺ ĺ Ḿ ḿ Ń ń Ó ó Ŕ ŕ Ś ś Ú ú Ý ý Ź ź · À à È è Ì ì Ǹ ǹ Ò ò Ù ù · İ Ż ż ·  â Ĉ ĉ Ê ê Ĝ ĝ Ĥ ĥ Î î Ĵ ĵ Ô ô Ŝ ŝ Û û · Ä ä Ë ë Ï ï Ö ö Ü ü Ÿ ÿ · ǘ ǜ ǚ ǖ · caron/háček: Ǎ ǎ Č č Ď ď Ě ě Ǐ ǐ Ľ ľ Ň ň Ǒ ǒ Ř ř Š š Ť ť Ǔ ǔ Ž ž · breve: Ă ă Ğ ğ Ŏ ŏ Ŭ ŭ · Ā ā Ē ē Ī ī Ō ō Ū ū · à ã Ñ ñ Õ õ · Å å Ů ů · Ą ą Ę ę · Ç ç Ş ş Ţ ţ · Ő ő Ű ű · Ș ș Ț ț 이 문서에서 사용한 틀: 틀:Skin (원본 보기) (준보호됨)틀:ㅊ (원본 보기) (준보호됨)틀:가로목록 (원본 보기) (준보호됨)틀:각주 (원본 보기) (준보호됨)틀:고지 상자 (원본 보기) (보호됨)틀:둘러보기 상자 (원본 보기) (보호됨)틀:둘러보기 상자/중첩 (원본 보기) (준보호됨)틀:둘러보기 상자/핵심 (원본 보기) (보호됨)틀:리브레 시리즈 (편집) 틀:쉽게 알 수 있다 시리즈 (편집) 틀:주석 (편집) 틀:취소선 (원본 보기) (준보호됨)틀:키 (원본 보기) (준보호됨)틀:틀바 (원본 보기) (준보호됨)시리즈:쉽게 배우는 프로그래밍 입문 (편집)