R 시작하기, 2022

R과 R Studio 를 설치하고 R 의 기본환경을 이해하기 위해 정리한다.

old version:

R 소개

R은 벨 연구소 Becker 등에 의해 개발됐던 S language를 기반으로 통계 계산, 시각화를 위한 프로그래밍 언어를 포함한 개발환경이다. S language를 이용한 Insightful사의 S+는 S 언어를 이용한 상업용 소프트웨어이고, R은 공개소프트웨어 기반의 소프트웨어 이다.

  • 예) Excel, SPSS, SAS, HLM, MPlus 등 통계 프로그램

R 학습 자료

  1. K-MOOC: 데이터과학을 위한 R프로그래밍, 이혜선 (포항공과대학교)
  2. R프로그래밍및실습, Jinseog Kim (동국대학교)

설치

R 프로그래밍 엔진은 R 을 다운로드하고 GUI 도구로 R Studio를 사용할 수 있다.

  1. CRAN mirror http://r-project.org 에서 R Download 한다.
  2. R Studio IDE
  3. Old Version RStudio 설치

R 시작하기

R 은 console을 통해 프로그래밍을 하거나 외부 에디터에서 작성한 소스를 컴파일해서 실행 할 수 있다. R 엔진을 IDE 를 통해서 개발한 코드를 실행하고 테스트 할 수 있다.

macOS에서 R 시작시 다음 같은 경고를 보이면 macOS FAQ를 참고해 설정을 해주어야 한다.
> [그림. ]

R과 R Studio 화면

R prompt

R을 실행하면 명령 입력 프롬프트 > 을 볼 수 있다. 프롬프트에서 한 줄에 하나 혹은 한문장의 명령이 입력되고 실행된다.

1
2
3
4
5
6
7
> print("Hello World")
> Factorial(10) # 계산 기능
> Rep(x="hello", times=5)
> Rep(times=5) : Error…
> Plot(10,10)
> Plot(c(5,7), c(20, 30))
> Plot(runif(100), runif(100)) # runif()는 랜덤 넘버 생성 함수

프롬프트 > 에 명령을 입력하고 엔터키를 실행이 되지만 코드 블럭 괄호((),{},[])가 닫히지 않으면 프롬프트에 + 에 연결해서 계속 입력할 수 있다.

1
2
3
4
5
6
7
[Workspace loaded from ~/work-R/R기본사용/.RData]

> print('hello r studio'
+ 'greeting me'
Error: unexpected string constant in:
"print('hello r studio'
'greeting me'"

R Studio IDE

R Studio IDE에서 작성 가능한 R 프로그래맹 편집기 종류를 살펴보면,

R Notebook 코드 작성중 package 요구

R 이용

R 사용 환경에 도움이 되는 구성을 살펴보자

한글 폰트 지정

나눔고딕코딩 폰트를 다운받아 설치한다.

R 환경설정에서 Nanum font 사용한다.

help() 사용

R에서 도움말을 통해 함수, 형식, 등의 정보를 얻을 수 있다.

1
> help(“함수명”)

패키지를 로드하지 않은 함수의 도움말 보기

1
> help.search(“함수명”)

내가 얻은 패키지는 어떤 것인가?

1
> help(package=”알고싶은 패키지명”)

주요 도움말 명령 사용

1
2
3
4
5
6
7
8
9
10
> help()                      # 도움말 창
> help(ls) # 함수 ls()에 대한 도움말
> ?ls # 도움말 단축키 ?로 help(ls) 호출
> help(">") # R의 예약어, 연산자 등은 ""로
> help("for") # 묶는다.
> #특정 패키지에 대한 도움말 요청
> help(package="datasets")
> # 일반 검색어를 이용해 도움말 검색
> help.search("Latex")
> ??"Latex"

샘플로 제공하는 예제를 사용할 수 있도록 검색을 지원한다.

1
2
3
4
5
6
7
> example("formula")

formul> class(fo <- y ~ x1*x2) # "formula"
[1] "formula"

formul> fo
y ~ x1 * x2

object

R은 동적 객체 방식을 사용한다. 아래는 hello 변수를 선언하고 값을 대입한다. 이렇게 대입되면 R에서 객체로 다뤄진다.

1
2
3
> hello <- “안녕하세요"            #유니코드 문자열
> hello
[1] “안녕하세요"

동적 객체이기 때문에 새로운 변수 값을 대입할 수 있다.

1
2
3
> hello <- 100 + 200
> hello
[1] 300

숫자형식의 데이터를 가지고 문자형으로 다시 대입할 수 있다.

1
2
3
> hello <- 'this is a text'
> hello
[1] "this is a text"

객체와 객체를 이용해서 연산도 할 수 있다.

1
2
3
4
> test1 <- 1
> test2 <- 2
> test1 + test2
[] 3

논리형식의 데이터를 이용해 참/거짓을 이용할 수 있다.

1
2
> Object1 <- TRUE               # 논리형
> Object2 <- FALSE

ls() : 객체 목록

ls()는 사용한 객체들의 목록을 반환해 준다.

1
2
3
> x <- 1
> y <- 1:10
> ls()

rm(): R 객체를 삭제

1
2
3
4
> x <- 1
> y <- 1:10
> rm(x,y)
> ls()

Workspace

R에서 작업공간(workspace)에 사용자가 R을 이용하여 수행하는 자료와 분석 프로시져 등을 포함하게 된다.

  • getwd(): 현재 워크스페이스 경로
  • setwd(PATH): 지정한 PATH로 현재 워크스페이스를 지정한다.
  • list.files(PATH): 경로의 파일 목록을 반환

객체 저장

작업공간은 저장할 수 있다. 저장을 실행하면 작업 디렉토리에 .RData 라는 파일이 생성된다.

1
2
> help("save.image")        # 도움말을 살펴보며 진행
> save.image()

R의 종료를 위해서는 명령문 프롬프트에서 **q()**를 실행하던가 메뉴로부터 “종료”를 선택한다.
종료시 워크스페이스에 작업된 자료를 저장할 수 있다.

R패키지: R의 확장기능 이용

search()는 설치된 R패키지들을 확인하는 명령

1
2
3
4
search()
## [1] ".GlobalEnv" "package:stats" "package:graphics"
## [4] "package:grDevices" "package:utils" "package:datasets"
## [7] "package:methods" "Autoloads" "package:base"

library(): R에 설치된 모든 패키지 및 설명

library() 명령은 라이브러리를 현재 환경에 로딩해 준다.

1
2
library()
library(package_name): 패키지를 현재 R세션으로 로딩

예를 들어 MASS 패키지를 로딩하는 명령을 보자

1
library(MASS) # MASS 패키지를 로드

새로운 패키지를 설치할 수 있다.

1
install.packages(): R에 새로운 패키지 설치

stringr 패키지를 설치한다.

1
install.packages("stringr")


R 객체 이용하기

R 객체에는 아래와 같은 종류들이 있음

  • atomic(상수)
  • vector(벡터)
  • matrix(행렬)
  • list(리스트)
  • data.frame(데이터프레임)
  • function(함수)
  • operator(연산자) …
  • 데이터 객체 (data object): R 객체 중 데이터 객체 : atomic, vector, matrix, data.frame

객체의 이름

객체명 표시방법: 알파벳문자, ’_‘,’.’, 숫자의 조합

주석

한 줄을 인터프리터가 해석하지 않고 패스하는 라인 코멘트(주석문) # 를 사용한다

1
2
a <- 1
b_1 <- 10 # <-는 left assignment

벡터

R의 최소 단위는 벡터

정수(1), 실수(5.8271), 문자(‘A’) 문자열(“hello”)는 스칼라이다.
벡터는 {1,2,3,4,5,6}과 같이 스칼라가 여러 개 모인 것이이다.

한 개의 스칼라 값을 가진 벡터를 선언한다.

1
> a <- 5

객체에 다른 객체 넣기

1
2
3
4
5
6
7
> object1 <- 1
> object2 <- 2
> object1
[1] 1
> object1 <- object2
> object1
[1] 2

객체에 다른 객체 넣기

1
2
3
4
5
6
> object1 <- 1
> object1 <- 2
> object1 <- object2
> object2 <- 100
> object1
[1] 2

함수 계산 결과를 객체에 넣기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
> Excel1 <- read.csv(“example_student.csv”)

> Object1 <- sum(1,8,4,5,9)
Object1 : 27

> A <- c(1,3,5,6,9) # 벡터에 대해
A : 1,3,5,6,9

> A <- 1
Is.vector(a): True

A <- c(1,2,5)
Is.vector(a): True

> A <- c(“첫번째”, “두번째”, “세번째”)
A : ???

Package 관리

외부에서 제공하는 모듈을 Install, Update, Library 명령으로 관리할 수 있다. 패키지 설치는 Install 그리고 사용할 때는 Library 명령을 사용하고 패키지 갱신에 Update 명령을 사용한다.

패키지 관리

패키지 설치과 업데이트

1
2
3
4
> install.packages("패키지명")      # 패키지 설치
> library("패키지명") # 패키지 불러들이기 (사용)
> require("패키지명") #
> update.packges('패키지명') # 패키지 갱신

설치된 패키지 목록 보기

1
2
3
> Library()
> installed.packages()
> Install.packages()[, c(“Packages”, “version”, “License”)]

필수 패키지

1
2
3
4
5
6
7
8
9
10
11
Install.packages(“rgl”) # 3D 그래프 보여주는 패키지
Install.packages(“ggplot2”)
Install.packages(“ggthemes”)
Install.packages(“data.table”)
Install.packages(“devtools”)
Install.packages(“KoNLP”)
Install.packages(“dplyr”)
Install.packages(“plyr”)
Install.packages(“reshape2”)
Install.packages(“scales”)
Install.packages(“stringr”)

Github로 패키지 설치하기

개발자가 베타 버전을 github에 공개하는 경우
Knitr 패키지는 R에서 html, pdf, MS-Word 문서를 만들 수 있음고 https://github.com/yihui/knitr 에서 배포한다.

1
2
3
4
> Install.packages(“devtools”)
Library(“devtools”)

> install_github(“yihui/knitr”)

RStudio UTF8 지원


참조

R Programming tutorial

R 프로그래밍

R 프로그래밍 언어(줄여서 R)는 통계 계산과 그래픽을 위한 프로그래밍 언어이자 소프트웨어 환경이다.

뉴질랜드 오클랜드 대학의 로스 이하카와 로버트 젠틀맨에 의해 시작되어 현재는 R 코어 팀이 개발하고 있다. R은 GPL 하에 배포되는 S 프로그래밍 언어의 구현으로 GNU S라고도 한다. R은 통계 소프트웨어 개발과 자료 분석에 널리 사용되고 있으며, 패키지 개발이 용이하여 통계학자들 사이에서 통계 소프트웨어 개발에 많이 쓰이고 있다.

R의 문법과 통계처리 부분은 AT&T 벨 연구소가 개발했던 S를 참고했고, 데이터 처리부분은 스킴에 영향을 받았다. - 위키피디아

R 소개

  • 개발자도 배우기 쉽지 않은 언어
    • 함수형, 절차형 언어의 혼합
  • 통계용어 난무
    • 통계학자도 배우기 쉽지 않은 언어 – 프로그래밍의 어려움
  • 자유로운 분석 추구 쉽다.

Object

R에서 Data는 객체(Object)로 표현하고 저장한다. 객체는 인덱스를 가진 구조를 가진 벡터이다.

객체 선언

일반 변수 선언 같이 객체는 대입연산자(“=”, “<-“, “<<-)을 통해 숫자, 문자, 논리형 및 4가지 상수 자료형 값을 넣을 수도 있다.

  • 객체 이름은 알파벳, 숫자, “.”, “_“ 으로 시작한다
  • 큰 따옴표로 둘러싸여지지 않은 이름은 객체로 사용한다
  • R은 대문자와 소문자를 구분합니다. 즉, abc, ABC, abC는 모두 다른 객체로 취급.
  • 숫자로 시작할 수 없다.
  • 예약어를 객체 이름으로 사용할 수 없다.
    • break else FALSE for function if in Inf
    • NA NaN next NULL repeat TRUE while
  • 세미콜론 ; 으로 구문을 구분해 사용할 수 있다.

기본 자료형

자료 저장을 위해 R 에서 사용하는 기본 자료형은 하나의 객체이며 그 종류는 다음과 같습니다. (괄호 안의 영문은 R 내부에서 사용하면 자료 객체의 이름입니다.)

  • 숫자형
    • 정수 (integer)
    • 실수 (numeric)
    • 복소수 (complex)
  • 문자형 (character)
    • 큰따옴표로 둘러 쌓아 표현 : “abc”, “123” 등
  • 논리형 (logical)
    • TRUE(T), FALSE(F)
  • 특수한 상태를 나타내는 상수
    • NULL: 정의되지 않은 값
    • NA : Missing Value
    • -Inf, Inf : 음과 양의 무한대
    • NaN : 수의 연산에서 불능의 경우 표현 0/0, Inf/Inf 등

객체 대입과 접근

R에서 객체로 데이터 형식 없이 대입 연산자 =, <-, <<- 를 이용한다.

할당연산자 의미
= 일반적인 오른쪽 값을 왼쪽 변수에 할당
<- 우변의 결과를 좌변의 객체에
-> 좌변의 결과를 우변의 객체
<<-

변수는 내부적으로 벡터로 저장되어 인덱스로 접근할 수 있다. 벡터 인덱스는 1부터 시작한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
> x <- 10          #변수 x에 스칼라 값 10을 대입
> x = 10
> x
[1] 10
> x[0] #변수의 요소 접근
numeric(0)

> 'hello' -> h
> x <- 2; y <- 3; #세미콜론
> k <- 2 + 6i #리터럴
> j <- 2 - 3i #리터럴
> k
[1] 2+6i
> k+j
[1] 4+3i

객체에 잘못된 대입의 결과

1
2
3
4
> 1a <- 1             # 변수 1a에 1을 할당. 오류
Error: unexpected symbol in "1a"
> if <- 1 # 변수 if에 1을 할당. 오류
Error: unexpected assignment in "if <-"

이렇게 할당한 객체를 확인하려면

1
2
3
4
5
> ls()                      # 현재 객체 목록
> objects() # 현재 객체 목록
[1] "h" "j" "k" "x" "y"
> mode(h) # 데이터 형식 확인
[1] "character"

객체를 메모리에서 지우려면 rm() 함수를 사용한다.

1
> rm(객체명, 객체명, ...)

삭제 명령

1
2
> rm(x)               # 객체의 삭제
> rm(list=ls()) # 모든 객체 삭제

Scala

스칼라 값은 하나의 단순한 숫자, 문자열 같은 값으로 R에서 변수, 객체의 요소 값을 말한다.

아래 같은 종류의 값을 스칼라 값이라 한다.

  • NA: “데이터 없음” 으로 is.na(x)로 확인 가능
  • NULL: 변수가 초기화 되지 않음을 의미
  • 문자열: ‘’, “”로 묶인 문자열
  • 진리값: TRUE, FALSE로 참, 거짓 표현

상수는

숫자에 의미를 두어 숫자 1,2,3.. 과 문자열인 “pi”, “constant”… 등을 상수로 정의해서 사용한다.
즉 표기 자체의 의미가 변하지 않는 것을 상수라고 하고 숫자와 큰 따옴표로 둘러쌓여진 문자들은 상수로 사용된다.

문자열 함수

1
2
3
4
5
> s <- paste("하나", "1", "둘", "2")      # 문자열 결합
[1] "하나 1 둘 2"
> sp <- strsplit("안 녕 하 세 요", " ") # 문자열 분리
[1] "안" "녕" "하" "세" "요"
> cat("문자열 출력", "\n") # 문자열 결합후 출력

Arithmetic operators

R에서 사용하는 연산자는 +(덧셈), -(뺄셈), *(곱셈), /(나눗셈), %/%(정수나눗셈), %%(나머지), ^(제곱) 등이 있습니다. 우선순위는 표준적인 연산의 우선순위를 따르고, 괄호 안쪽의 수식, 지수 및 근호, 곱하기와 나누기, 더하기와 빼기 순이다.

연산자 의미
+,-,*,/ 사칙연산 x+y, y/y, x-y, x*y
x^y, x**y 거듭제곱 x^2, x**2
x %/% y 정수 나눗셈
x %% y 나머지
1
> 산술연산자 관련 `help(Arithmetic)`

산술연산자 연습:

1
2
3
4
5
6
7
8
9
10
11
12
13
> 10 * 20
[1] 200
> 6 / 2
[1] 3
> 6 %/% 2
[1] 3
> 6 %% 2
[1] 0
> 8**2
[1] 64
> 8^2
[1] 64
>

연산자 우선순위

연산자는 괄호 안쪽의 수식, 지수 및 근호, 곱하기와 나누기, 더하기와 빼기 순입니다.

1
2
3
4
5
6
7
8
> 3/(2-1)                      # 괄호안의 숫자는 항상 우선순위가 높음
[1] 3
-3^2 # 거듭제곱이 먼저 계산
[1] -9
> sqrt(3+1)*2 # 루트의 계산은 sqrt()함수를 사용하며 우선순위가 높음
[1] 4
> 12 + 34 - 56 * 78 / 90 # 곱하기, 나누기의 우선순위는 더하기 빼기보다 높음
[1] -2.533333

논리 연산자

| 연산자 | 의미 | 예 |
| —————- | —————– | ——————– | — | —- |
| TRUE, FALSE | 참 | |
| &&, || | AND 조건, OR 조건 | true && true, x | | y |
| &, | | AND 연산, OR 연산 | x & y |
| !x | 부정 | !true |
| isTRUE(x) | x의 TRUE 판단 | isTRUE(FALSE) |
| xor( ) | | |

논리연산자 실습:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
> TRUE || FALSE
[1] TRUE
> TRUE || TRUE
[1] TRUE
> TRUE && FALSE
[1] FALSE
> TRUE && TRUE
[1] TRUE
> TRUE & TRUE
[1] TRUE
> 1 > 5
[1] FALSE
> 10 <= 10
[1] TRUE
> 10 != 1
[1] TRUE
> x <- F
> isTRUE(x)
[1] FALSE

비교 연산자

연산자 의미
<**, **> 작고, 큰 x < y, x > y
>=, <= 크거나/작거나
== 같은

컬렉션 함수를 이용해 데이터세트를 생성한다.

1
2
3
4
5
6
7
8
> 1 > 2
> 6 == 6
> ( 105 ) | ( 4 + 2)
>

> x <- c(1,2,4) # 컬렉션 데이터
> x < 3 # 각 요소의 비교
> x[x<3] <- 0 # TRUE 조건에 0

조건식

컬렉션 함수를 이용해 데이터세트를 생성한다.

1
2
3
4
5
6
> x <- c(1,2,4)                # 컬렉션 데이터
> for(i in 1 : NROW(x)) {
+ if (x[i] < 3) {
+ x[i] <- 0
+ }
+ }

연산자 실습

현재가치와 미래가치를 파악하는 예를 들어 연산자를 사용해 보자.

미래가치를 FV(future value), 현재가치를 PV(present value), 이자율을 r, 기간을 n 이라고 하면 아래 식으로 계산 할 수 있다.

1
2
\\[FV = PV * (1 + r)^{n}\\]
\\[PV = \frac{FV}{(1+ r)^{n}}\\]

‘지금 1억원을 받을래? 1년 뒤에 1억 천만원을 받을래?’ 이제 선택이 쉽지 않습니다. 선택을 위해서는 1년간의 이자율을 알아야 합니다. 1년간의 이자율이 5%라고 가정해보겠습니다. 지금 1억원을 받아 1년간 예금하면 1억 5백만원이 됩니다. 1년 뒤에 1억 천만원을 받는 것이 유리합니다. 만약 이자율이 15%라면 어떨까요? 지금 1억원을 받아 예금해 두면 1년뒤에 1억 1,500만원이 될 것이기 때문에 지금 1억원을 받는 것이 합리적입니다.

  • 이자율이 3%일 때, 1억원을 10년간 예치 한 후 금액은?
  • 10년 후 1억원을 받기 위해서 현재 투자해야 할 금액은?
1
2
3
4
5
6
7
8
9
10
> r <- 0.03              # 이자율 변수 r에 0.03을 할당
> n <- 10 # 기간 변수 n에 10을 할당
> PV <- 100000000 # 현재가치 변수 PV에 1억원을 할당
> FV <- PV * (1+r)^n # 미래가치 FV를 계산
> FV
[1] [1] 134391638 # 이자율 3%로 10년간 1억원 예치시 1억3천만원 수령
> FV <- 100000000 # 미래가치 FV에 1억원을 할당
> PV <- FV/(1+r)^n # 현재가치 PV를 계산
> PV
[1] 38554329

Package 관리

외부에서 제공하는 모듈을 Install, Update, Library 명령으로 관리할 수 있다. 패키지 설치는 Install 그리고 사용할 때는 Library 명령을 사용하고 패키지 갱신에 Update 명령을 사용한다.

패키지 관리

패키지 설치과 업데이트

1
2
3
4
> install.packages("패키지명")      # 패키지 설치
> library("패키지명") # 패키지 불러들이기 (사용)
> require("패키지명") #
> update.packges('패키지명') # 패키지 갱신

설치된 패키지 목록 보기

1
2
3
> Library()
> installed.packages()
> Install.packages()[, c("Packages", "version", "License")]

필수 패키지

  • Install.packages(“rgl”) # 3D 그래프 보여주는 패키지
  • Install.packages(“ggplot2”)
  • Install.packages(“ggthemes”)
  • Install.packages(“data.table”)
  • Install.packages(“devtools”)
  • Install.packages(“KoNLP”)
  • Install.packages(“dplyr”)
  • Install.packages(“plyr”)
  • Install.packages(“reshape2”)
  • Install.packages(“scales”)
  • Install.packages(“stringr”)

Github로 패키지 설치하기

개발자가 베타 버전을 github에 공개하는 경우 Knitr 패키지는 R에서 html, pdf, MS-Word 문서를 만들 수 있음고 https://github.com/yihui/knitr 에서 배포한다.

1
2
3
4
> Install.packages("devtools")
Library("devtools")

> install_github("yihui/knitr")

R 관련 검색

R에서 외부 데이터 읽어들이기

외부에서 정리한 데이터를 R로 가져오면 dataframe 객체(테이블)에 저장된다.

Csv 포맷 문서 읽어들이기

_Read.csv()_ 함수를 사용한다.

1
2
> List <- read.csv("example_studentlist.csv")
> List : ………………………………….

Csv 파일에 column header가 없을 경우,

1
> List <- read.csv("example_studentlist.csv", header=F)

Txt 포맷 데이터 읽기

Read.table() 함수를 사용한다.

1
2
List <- read.table("studentlist.txt")
List : ……………………

파일에 column header가 있을 경우, header=T 인수 필요

1
List <- read.table("studentlist.txt", header=TRUE)

데이터 파일의 데이터 구분자가 예를 들어 세미콜론 ; 인 경우, Read.table() 함수에 sep 인수 추가

1
List <- read.table("studentlist2.txt", header=TRUE, sep=";")

Excel 파일 읽어들이기 위해서 Readxl 패키지 필요

1
2
3
4
Install.packages("readxl")
Library("readxl")
Df <- read_excel(path="studentlist2.xlsx", sheet="Sheet1", col_names = TRUE)
Df: ……………………..

XML 포맷 읽어들이기

1
2
Install.packages("XML")
Library("XML")

Xml 파일 불러오기

DocFromXML <- xmlTreeParse(“score.xml”, useInternal=T)

불필요한 태그 빼고 필요한 컨텐츠만 가져오는 경우, xmlRoot() 사용

1
2
> RootNode <- xmlRoot(DocFromXML)
RootNode : ……………………..

특정 노드값(name) 가져오기

1
2
> Names <- xpathSApply(RootNode, "//name", xmlValue)
Names: ……………

특정 노드값(score) 가져오기

1
> Names <- xpathSApply(RootNode, "//score", xmlValue)

두값(name, score)을 테이블로 만들려면, data.frame() 사용

1
2
> MathScore <- data.frame(NAME=Names, SCORE=Scores)
MathScore : …………………..

웹에 있는 HTML 형식의 테이블 읽어들이기

XML 패키지에 있는 readHTMLTable() 함수를 이용하여 웹에 있는 테이블을 읽어들일 수 있다.

1
2
> RawData <- readHTMLTable(http://cran.r-project.org/web/packages/available_package_by_name.html)
Class(RawData): …………….. list class 상태임.

간편하게 보려면 dataframe 형식으로 변경.

1
2
3
PackageList <- as.data.frame(RawData)
Names(PackageList) <- c(Package Name", "Description") 변수열 이름 조정
Head(PackageList, 5) : PackageList의 1~5 번째 까지의 관측치(Observation) 출력

Control+C, Control+V로 데이터 가져오기. 엑셀에서 데이터 영역 선택 후 Control+C

1
StudentList <- read.delim("clipboard"), read.delim은 header 자동 인식

R 시작하기

R 소개

R은 벨 연구소 Becker 등에 의해 개발됐던 S language를 기반으로 통계 계산, 시각화를 위한 프로그래밍 언어를 포함한 개발환경이다. S language를 이용한 Insightful사의 S+는 S 언어를 이용한 상업용 소프트웨어이고, R은 공개소프트웨어 기반의 소프트웨어 이다.

  • 예) Excel, SPSS, SAS, HLM, MPlus 등 통계 프로그램

소개

http://revolution-computing.typepad.com/.a/6a010534b1db25970b01676908ecaf970b-pi

설치

R 의 GUI 도구로 R Studio를 사용할 수 있다.

  1. http://r-project.org 의 CRAN mirror에서 R을 다운받아 설치한다.
  2. RStudio 설치

R 시작하기

R 은 console을 통해 프로그래밍을 하거나 외부 에디터에서 작성한 소스를 컴파일해서 실행 할 수 있다.

macOS에서 R 시작시 다음 같은 경고를 보이면 macOS FAQ를 참고해 설정을 해주어야 한다.

[그림. ]

prompt

R을 실행하면 명령 입력 프롬프트 ‘>’을 볼 수 있다. 프롬프트에서 한 줄에 하나 혹은 한문장의 명령이 입력되고 실행된다.

1
2
3
4
5
6
7
print(“Hello World”)
Factorial(10) # 계산 기능
Rep(x=”hello”, times=5)
Rep(times=5) : Error…
Plot(10,10)
Plot(c(5,7), c(20, 30))
Plot(runif(100), runif(100)) # runif()는 랜덤 넘버 생성 함수

에서 명령을 입력하고 엔터로 실행이 되지만 괄호((),{},[])가 닫히지 않으면 ‘+’ 프로프트에서 계속 입력할 수 있다.

help() 사용

R에서 도움말을 통해 함수, 형식, 등의 정보를 얻을 수 있다.

1
> help(“함수명”)

패키지를 로드하지 않은 함수의 도움말 보기

1
> help.search(“함수명”)

내가 얻은 패키지는 어떤 것인가?

1
> help(package=”알고싶은 패키지명”)

주요 도움말 명령 사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
> help()                      # 도움말 창
> help(ls) # 함수 ls()에 대한 도움말
> ?ls # 도움말 단축키 ?로 help(ls) 호출
> help(">") # R의 예약어, 연산자 등은 ""로
> help("for") # 묶는다.
> #특정 패키지에 대한 도움말 요청
> help(package="datasets")
> # 일반 검색어를 이용해 도움말 검색
> help.search("Latex")
> ??"Latex"
>
> # 사용 예제 검색
> example(mean)
mean> x <- c(0:10, 50)

mean> xm <- mean(x)

mean> c(xm, mean(x, trim = 0.10))
[1] 8.75 5.50
>

object

다음 같이 hello 변수와 값을 대입하고 hello 변수를 살펴본다.

1
2
3
4
5
6
7
8
9
10
11
12
> hello <- “안녕하세요"            #유니코드 문자열
> hello
[1] “안녕하세요"
> hello2 <- “R"
[] “R"
> Object1 <- 1 # 숫자
> Obect2 <- 2
> Object1 + Object2
[] 3

> Object1 <- TRUE # 논리형
> Object2 <- FALSE

Workspace

R에서 작업공간(workspace)에 사용자가 R을 이용하여 수행하는 자료와 분석 프로시져 등을 포함하게 된다.

  • setwd( … ): 명령으로 워크스페이스 변경
  • getwd(): 현재 워크스페이스 경로
  • list.files(PATH): 경로의 파일 목록을 반환

R의 종료를 위해서는 명령문 프롬프트에서 **q()**를 실행하던가 메뉴로부터 “종료”를 선택한다.
종료시 워크스페이스에 작업된 자료를 저장할 수 있다.

R 객체 이용하기

R의 최소 단위는 벡터

정수(1), 실수(5.8271), 문자(‘A’) 문자열(“hello”)는 스칼라이다.
벡터는 {1,2,3,4,5,6}과 같이 스칼라가 여러 개 모인 것이이다.

한 개의 스칼라 값을 가진 벡터를 선언한다.

1
> a <- 5

객체에 다른 객체 넣기

1
2
3
4
5
6
7
> object1 <- 1
> object2 <- 2
> object1
[1] 1
> object1 <- object2
> object1
[1] 2

객체에 다른 객체 넣기

1
2
3
4
5
6
> object1 <- 1
> object1 <- 2
> object1 <- object2
> object2 <- 100
> object1
[1] 2

함수 계산 결과를 객체에 넣기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
> Excel1 <- read.csv(“example_student.csv”)

> Object1 <- sum(1,8,4,5,9)
Object1 : 27

> A <- c(1,3,5,6,9) # 벡터에 대해
A : 1,3,5,6,9

> A <- 1
Is.vector(a): True

A <- c(1,2,5)
Is.vector(a): True

> A <- c(“첫번째”, “두번째”, “세번째”)
A : ???

Package 관리

외부에서 제공하는 모듈을 Install, Update, Library 명령으로 관리할 수 있다. 패키지 설치는 Install 그리고 사용할 때는 Library 명령을 사용하고 패키지 갱신에 Update 명령을 사용한다.

패키지 관리

패키지 설치과 업데이트

1
2
3
4
> install.packages("패키지명")      # 패키지 설치
> library("패키지명") # 패키지 불러들이기 (사용)
> require("패키지명") #
> update.packges('패키지명') # 패키지 갱신

설치된 패키지 목록 보기

1
2
3
> Library()
> installed.packages()
> Install.packages()[, c(“Packages”, “version”, “License”)]

필수 패키지

1
2
3
4
5
6
7
8
9
10
11
Install.packages(“rgl”) # 3D 그래프 보여주는 패키지
Install.packages(“ggplot2”)
Install.packages(“ggthemes”)
Install.packages(“data.table”)
Install.packages(“devtools”)
Install.packages(“KoNLP”)
Install.packages(“dplyr”)
Install.packages(“plyr”)
Install.packages(“reshape2”)
Install.packages(“scales”)
Install.packages(“stringr”)

Github로 패키지 설치하기

개발자가 베타 버전을 github에 공개하는 경우
Knitr 패키지는 R에서 html, pdf, MS-Word 문서를 만들 수 있음고 https://github.com/yihui/knitr 에서 배포한다.

1
2
3
4
> Install.packages(“devtools”)
Library(“devtools”)

> install_github(“yihui/knitr”)

RStudio UTF8 지원


참조