R (프로그래밍 언어)

위키백과, 우리 모두의 백과사전.
둘러보기로 가기 검색하러 가기
R
R logo.svg
개발자 R 재단
최근 버전 3.5.0 ("Joy in Playing")[1] / 2018년 4월 23일 (56일 전)(2018-04-23)
운영 체제 크로스 플랫폼
종류 프로그래밍 언어
라이선스 GNU GPL
웹사이트 http://www.r-project.org/

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

소개[편집]

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

R은 다양한 통계 기법과 수치 해석 기법을 지원한다. R은 사용자가 제작한 패키지를 추가하여 기능을 확장할 수 있다. 핵심적인 패키지는 R과 함께 설치되며, CRAN(the Comprehensive R Archive Network)을 통해 2016년 현재 10,300개 이상의 패키지를 내려 받을 수 있다.

R의 또다른 강점은 그래픽 기능으로 수학 기호를 포함할 수 있는 출판물 수준의 그래프를 제공하는 것이다.

R은 통계 계산과 소프트웨어 개발을 위한 환경이 필요한 통계학자와 연구자들 뿐만 아니라, 행렬 계산을 위한 도구로서도 사용될 수 있으며 이 부분에서 GNU Octave나 MATLAB에 견줄 만한 결과를 보여준다.

R은 윈도, 맥 OS 및 리눅스를 포함한 UNIX 플랫폼에서 이용 가능하다.

처리속도[편집]

인터프리터 언어라는 이유로 처리속도가 낮다는 평가를 받는 경우가 많다. 그러나 실제로는 S의 상용판인 S-PLUS보다 많은 경우 속도가 빠를 뿐만 아니라, 범용행렬계 언어의 표준과도 같은 MATLAB과 그 파생어인 GNU Octave, Scilab보다도 종합적으로 빠르다는 평가가 있다.[출처 필요]

R-studio[편집]

오픈 소스인 R을 좀 더 편하게 사용하기 위해 개발된 프로그램인 R-Studio 존재. R-Studio

예제[편집]

Hello world 출력하기

> "Hello world"
[1] "Hello world"

CSV 파일 읽기

# 1행에 열이름을 넣었을 경우 header=T 옵션을 줘서 이름을 인식시킬 수 있다.
> df <- read.csv("a.csv", header = T)

기본 연산

> x <- c(1, 2, 3, 4, 5, 6)   # 벡터x 정의
> y <- x^2              # 벡터x의 제곱을 y로 정의
> print(y)              # 벡터y 출력
[1]  1  4  9 16 25 36
> mean(y)               # 벡터y의 (산술)평균
[1] 15.16667
> median(y)             # 벡터y의 중앙값
[1] 12.5
> var(y)                # 벡터y의 분산
[1] 178.9667

예제 2[편집]

1. 단축키[편집]

  • Ctrl+↵ Enter: 해당 블록, 커서가 있는 줄의 코드 실행
  • Ctrl+⇧ Shift+C: 주석 생성 또는 제거
  • Ctrl+⇧ Shift+N: 새로운 script 창 생성
  • Ctrl+A: 스크립트 전체 행 선택
  • Ctrl+D: 해당 줄 삭제
  • Ctrl+⇧ Shift+M: (dplyr) 패키지 안의 pipe 함수 %>%

변수 할당[편집]

1. 변수 할당 및 출력[편집]

- 변수 할당 방법

  1. ' <- '
  2. ' = '

할당 연산자 중 '='는 명령의 최상위 수준에서만 사용할 수 있는 반면 '<-'는 어느 곳에서나 사용할 수 있다.

만약 '='를 사용한다면 경우에 따라 표현력에 한계가 있을 수 있기 때문에 변수에 값을 할당 할 때 '='보다는 '<-'를 사용하는 것이 좋다.

Ex)

> x<-3 # x라는 변수 명에 3이라는 값이 할당 됨.
> z=5 # z라는 변수 명에 5라는 값이 할당 됨.
> jeon<-"MinJae" # jeon이라는 변수 명에 MinJae 라는 문자가 할당 됨.

- 변수 출력 방법

  1. 변수명 직접 호출
  2. *print()
  3. *cat()

print 함수와 cat 함수 모두 객체를 출력할 때 사용하는 함수이지만 약간의 차이가 있다.

print()는 결과를 출력한 뒤 개행(줄바꿈)이 일어나는 반면, cat()은 행을 바꾸지 않고 그대로 출력한다.

Ex)

> x
[1] 3

> z
[1] 5

> for (i in 1:3) print(i)
[1] 1
[1] 2
[1] 3

> for (i in 1:3) cat(i)
123

2. 변수 명 규칙[편집]

  1. 변수 명은 특수문자 중 '.'(마침표), '_'(언더바), 영어, 숫자 사용 가능
  2. 변수 명은 숫자나 '_"(언더바)로 시작 불가
  3. 변수명이 '.'(마침표)로 시작할 경우 바로 뒤엔 영어가 와야 함

Ex)

> var_name.1<-3 # 변수 명 설정 가능, 첫 번째 조건
> .var_name.2<-3 # 변수 명 설정 가능, 세 번째 조건
> .2var.name<-3 # 변수 명 설정 불가능, 셋째 조건 불만족
> %var.name2<-3 # 변수명 설정 불가능, 첫째 조건 불만족
> 2var.name<-3 # 변수명 설정 불가능, 둘째 조건 불만족

3. 데이터 타입[편집]

R에서 사용되는 데이터 타입에는

Numeric(숫자), Character(문자), Logical(논리), NA/NULL이 있다.

  1. Numeric
    1. 숫자형 타입
    2. numeric, integer 두 개의 타입이 존재(numeric의 경우 실수, integer의 경우 정수로 표현)
    3. 특별히 지정하지 않는 경우 변수는 numeric으로 설정
  2. Character
    1. 문자형 타입
    2. Character, factor 두 개의 타입이 존재(character의 경우 문자, factor의 경우 level이 존재하는 문자로 표현)
    3. ""(큰따옴표) 혹은 ''(작은따옴표)를 사용하면 문자형 타입으로 취급
    4. factor의 경우 범주형 데이터를 표현하기 위한 데이터 타입
  3. Logical
    1. 논리형 타입
    2. TRUE, FALSE 두 가지 타입이 존재(T의 경우 T, FALSE의 경우 F로 표현 가능)
    3. TRUE, FALSE 값은 숫자화 시킨 경우 각각 1과 0의 값을 가짐
      1. TRUE의 경우 FALSE가 아닌 것을 가정하므로, 큰 범위에서 보면 0이 아닌 모든 숫자를 의미
  4. NA / NULL
    1. NA의 경우 Not Available 상수
      1. 결측치(값이 빠져 있는 경우)를 의미
    2. NULL의 경우 NULL 객체 의미
      1. 프로그래밍 편의를 위한 미정의 값을 의미

연산자[편집]

1. 산술 연산자[편집]

연산자 설명
+ 덧셈 a+b
- 뺄셈 a-b
* 곱셈 a*b
/ 나눗셈 a/b
^ 지수 승 a^2
%% 나머지 a%%b
%/% a%/%b

Ex)

> a<-9 # 변수 설정
> b<-3 # 변수 설정
> a+b # 덧셈
[1] 12
> a-b # 뺄셈
[1] 6
> a*b # 곱셈
[1] 27
> a/b # 나눗셈
[1] 3
> a^2 # 지수 승
[1] 81
> a%%b # 나머지
[1] 0
> a%/%b # 몫
[1] 3

2. 비교 연산자[편집]

연산자 설명
== 같은가 a==b
!= 다른가 a!=b
> 크다 a>b
>= 크거나 같다 a>=b
< 작다 a<b
<= 작거나 같다 a<=b

Ex)

> x<-6 # 변수 설정
> y<-4 # 변수 설정
> x==y # 같은가
[1] FALSE
> x!=y # 다른가
[1] TRUE
> x>y # 크다
[1] TRUE
> x>=y # 크거나 같다
[1] TRUE
> x<y # 작다
[1] FALSE
> x<=y # 작거나 같다
[1] FALSE

- 비교 연산자의 경우 특정 조건에 대해 참 / 거짓으로 구분되며, 결과 값을 TRUE, FALSE로 반환

3. 논리 연산자[편집]

연산자 설명
! 아니다 !a
| or a|b
|| or(객체의 첫 번째 요소만 비교) a||b
& and a&b
&& and(객체의 첫 번째 요소만 비교) a&&b

Ex)

> a<-5 # 변수 설정
> b<-3 # 변수 설정
> !TRUE
[1] FALSE
> !FALSE
[1] TRUE
> # 3 < a < 7 구현
> a>3 & a<7
[1] TRUE
> # a<3, a>7 구현
> a<3 | a>7
[1] FALSE
> # | 와 ||, &와 && 차이
> x<-c(1,0,1); y<-c(0,1,1)
> x|y
[1] TRUE TRUE TRUE
> x&y
[1] FALSE FALSE  TRUE
> x||y
[1] TRUE
> x&&y
[1] FALSE

Ex2) or 연산자, &연산자

or 연산자
TRUE FALSE
TRUE TRUE TRUE
FALSE TRUE FALSE
& 연산자
TRUE FALSE
TRUE TRUE FALSE
FALSE FLASE FALSE

4. 특수 연산자[편집]

  1.  %any% 형태
    1.  %in%
      1. 포함 여부를 물음
      2. 데이터 전처리 과정에서 자주 사용
    2. 연산자 생성
      1.  %이름%<-function(x,y){연산 내용}의 형태
  2. 행렬 곱 %*%
    1. 행렬 A 와 행렬 B의 곱
      1. A%*%B

Ex)

> x<-1:3; y<-2:5
> x %in% y
[1] FALSE  TRUE  TRUE
> "%s%"<-function(x,y) return(x^y)
> 3%s%2
[1] 9
> x<-matrix(1:4, ncol=2)
> y<-matrix(5:8, ncol=2)
> x%*%y
     [,1] [,2]
[1,]   23   31
[2,]   34   46

벡터[편집]

벡터(vector)는 다른 프로그래밍 언어에서 흔하게 접하는 배열의 개념으로, 한 가지 스칼라 데이터 타입의 데이터를 저장할 수 있다.

1. 벡터 생성[편집]

  1. c()를 이용한 결합
  2. *rep() 반복 함수를 통해 생성
  3. *seq() ':'와 같이 범위 지정을 통해 생성
  4. 벡터 내의 스칼라는 모두 같은 데이터 타입을 가짐

Ex)

> vec <- c(1,2,3)
> vec2 <- rep(1,5)
> vec3 <- seq(2:4)
> vec4 <- 5:1
> vec; vec2; vec3; vec4
[1] 1 2 3
[1] 1 1 1 1 1
[1] 1 2 3
[1] 5 4 3 2 1

> rep(1:3, 2) # 1부터 3까지, 2번 반복
[1] 1 2 3 1 2 3
> rep(1:3,2,each=2) # 1부터 3까지를 각각 2번씩 2회 반복
 [1] 1 1 2 2 3 3 1 1 2 2 3 3

 > seq(1,5) # 1부터 5까지의 벡터 생성
[1] 1 2 3 4 5
> seq(1,5, by=2) # 1부터 5까지 2씩 건너띄어서 출력
[1] 1 3 5
> seq(1,3, length=5) # 1부터 2까지 5개로 출력
[1] 1.0 1.5 2.0 2.5 3.0

2. 벡터 연산[편집]

벡터의 모든 요소에 연산을 적용함을 기본으로 한다.

Ex)

> a<-1:3
> b<-2:4
> a+b
[1] 3 5 7
> a*b
[1]  2  6 12
> a%%b
[1] 1 2 3
> a<b
[1] TRUE TRUE TRUE

3. 벡터 recyling[편집]

두 벡터의 크기가 다를 경우 작은 벡터의 반복이 일어난다.

Ex)

> a<-1:3
> a+2
[1] 3 4 5

4. 벡터함수, non-벡터 함수[편집]

  1. 벡터함수 = 모든 요소에 적용되는 함수로, 출력 결과 개수가 input 벡터와 동일한 함수
함수 설명
sqrt 제곱근 sqrt(x)
abs 절대값 abs(x)
round 반올림 round(x)
log 자연로그 log(x)
log10 상용로그 log10(x)
exp 지수함수 exp(x)
trunc 소수점 버림 trunc(x)
cumsum 누적합 cumsum(x)
cumprod 누적곱 cumprod(x)
cummax 누적 최대값 cummax(x)
cummin 누적 최소값 cummin(x)

이 외에도 다양한 함수 존재

Ex)

> x<-1:4
> sqrt(x) # 제곱근
[1] 1.000000 1.414214 1.732051 2.000000
> abs(x) # 절대값
[1] 1 2 3 4
> round(x) # 반올림
[1] 1 2 3 4
> log(x) # 자연로그
[1] 0.0000000 0.6931472 1.0986123 1.3862944
> log10(x) # 상용로그
[1] 0.0000000 0.3010300 0.4771213 0.6020600
> exp(x) # 지수함수
[1]  2.718282  7.389056 20.085537 54.598150
> trunc(x) # 소수점 버림
[1] 1 2 3 4
> cumsum(x) # 누적합
[1]  1  3  6 10
> cumprod(x) # 누적곱
[1]  1  2  6 24
> cummax(x) # 누적 최대값
[1] 1 2 3 4
> cummin(x) # 누적 최소값
[1] 1 1 1 1

2. non-벡터 함수

함수 설명
mean 평균 mean(x)
median 중앙값 median(x)
range 범위 출력 range(x)
sd 표준편차 sd(x)
var 분산 var(x)
sum sum(x)
min 최소 min(x)
max 최대 max(x)
IQR 사분위편차 IQR(x)
diff 차분 diff(x)

이 외에도 다양한 함수 존재

Ex)

x<-c(1,5,10)
> mean(x) # 평균
[1] 5.333333
> median(x) # 중앙값
[1] 5
> range(x) # 범위 출력
[1]  1 10
> sd(x) # 표준 편차
[1] 4.50925
> var(x) # 분산
[1] 20.33333
> sum(x) # 합
[1] 16
> min(x) # 최소
[1] 1
> max(x) # 최대
[1] 10
> IQR(x) # 사분위 편차
[1] 4.5
> diff(x) # 차분
[1] 4 5

3. 집합함수

함수 설명
union 합집합 union(x,y)
intersect 교집합 intersect(x,y)
setdiff 차집합 setdiff(x,y)
setequal 동일한가? setequal(x,y)
is.element 포함여부 is.element(x,y)

Ex)

> x<-c(1,2,3,4)
> y<-c(3,4,5,6)
> union(x,y) # 합집합
[1] 1 2 3 4 5 6
> intersect(x,y) # 교집합
[1] 3 4
> setdiff(x,y) # 차집합
[1] 1 2
> setequal(x,y) # 동일한가?
[1] FALSE
> is.element(x,y) #포함 여부
[1] FALSE FALSE  TRUE  TRUE

5. 벡터의 인덱싱, 필터링[편집]

  1. 인덱싱 = 벡터 요소의 위치에 해당하는 값을 출력
    1. [ ] 를 이용해서 인덱싱
  2. 필터링 = 원하는 조건의 값을 출력

Ex)

# 인덱싱
> x <- c(2,4,1,9,3)
> x[1] # 첫 번째 요소 출력
[1] 2
> x[4] # 네 번째 요소 출력
[1] 9
> x[2:4] # 두 번째 요소부터 네 번째 요소까지 출력
[1] 4 1 9
> x[5:1] # 다섯 번째 요소부터 첫 번째 요소까지 출력
[1] 3 9 1 4 2

# 필터링
> x <- c(1,5,6,8,2)
> x[c(TRUE,FALSE,FALSE,FALSE,TRUE)]
[1] 1 2
> x[x<3]
[1] 1 2
> x<3
[1]  TRUE FALSE FALSE FALSE  TRUE

    #조건에 해당하는 값 변경
> x <- 1:4
> x[x>2] <- 0
> x
[1] 1 2 0 0

행렬과 배열[편집]

행렬(Matrix)은 수학 시간에 배운 행렬의 정의와 마찬가지로 행(Row)과 열(Column)의 수가 지정된 구조

행렬은 벡터와 마찬가지로 한 가지 유형의 스칼라만을 저장

1. 행렬과 배열의 생성[편집]

  1. 행렬 생성

matrix(값, nrow = 행의 개수,

ncol = 열의 개수,

    byrow = FALSE(디폴트값),

    # 값의 입력 방향, TRUE시 행 우선 기입

    dimnames = NULL)

    # 행과 열의 이름, 반드시 리스트로 기입

2. 배열 생성

array(값,

  dim = c(행의 개수, 열의 개수, 차원(페이지)의 개수,

  dimnames = NULL)

    #행, 열, 페이지 이름, 반드시 리스트로 기입

Ex)

> matrix(1:4,2, byrow = T, dimnames = list(c("row1","row2"),c("col1","col2")))
     col1 col2
row1    1    2
row2    3    4

> array(1:8,dim = c(2,2,2),
+       dimnames = list(c("행1","행2"), c("열1","열2"),c("페이지1","페이지2")))
, , 페이지1121   1   32   2   4

, , 페이지2121   5   72   6   8

2. 행렬과 배열의 인덱싱[편집]

  1. 행렬의 인덱싱
    1. 행렬[행의 index, 열의 index]
  2. 배열의 인덱싱
    1. 배열[행의 index, 열의 index, 페이지의 index]

해당 index자리를 공백으로 두면 해당 index의 전체를 의미한다.

예를 들어 matrix[x, ]와 같이 열의 index 자리를 비우게 되면 x행의 전체 열을 출력하라 의미

Ex)

> a <- matrix(1:9,3)

> a
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

> a[1,]
[1] 1 4 7

> a[,1]
[1] 1 2 3

> a[c(1,3),]
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    3    6    9

> a[c(3,1,2),]
     [,1] [,2] [,3]
[1,]    3    6    9
[2,]    1    4    7
[3,]    2    5    8

> b <- array(1:8,dim = c(2,2,2),
+            dimnames =list(c("행1","행2"), c("열1","열2"),c("페이지1","페이지2")))
> b
, , 페이지1121   1   32   2   4

, , 페이지2121   5   72   6   8

> b[1,1,2]
[1] 5

> b[,2,]
    페이지1 페이지21       3       72       4       8

3. 행렬 간 연산 및 함수[편집]

함수 설명
nrow 행렬의 행(row)의 개수 nrow(a)
ncol 행렬의 열(column)의 개수 ncol(a)
rownames 행렬의 행 이름 설정 rownames(a)
colnames 행렬의 열 이름 설정 colnames(a)
%*% 행렬의 곱 a%*%b
rowSums 행렬의 행 합계 rowSums(a)
colSums 행렬의 열 합계 colSums(a)
diag 행렬의 대각원소 diag(a)
t 전치행렬 t(a)

Ex)

> a<-matrix(1:9, ncol=3, nrow=3) # 3X3 matrix 생성
> a
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> rownames(a)<-c("A","B","C") # 행 이름 설정
> colnames(a)<-c("AA","BB","CC") # 열 이름 설정
> a
  AA BB CC
A  1  4  7
B  2  5  8
C  3  6  9
> rowSums(a) # 행렬의 행 합계
 A  B  C
12 15 18
> colSums(a) # 행렬의 열 합계
AA BB CC
 6 15 24
> diag(a) # 행렬의 대각 원소
[1] 1 5 9
> t(a) # a의 전치행렬
   A B C
AA 1 2 3
BB 4 5 6
CC 7 8 9

리스트[편집]

리스트(list)는 배열과 비교할 때 데이터를 중간 중간에 삽입하는 데 유리한 구조로 설명한다. R에서 리스트는 데이터를 접근한다는 관점에서 다른 언어의 해시 테이블(hash table) 또는 딕셔너리(dictionary)로 종종 설명된다. 리스트는 벡터와 다르게 값이 서로 다른 데이터 타입을 담을 수 있다.

1. 리스트와 데이터 프레임의 자료구조[편집]

  1. 리스트의 경우 서로 다른 데이터 타입의

2. 리스트의 생성[편집]

리스트는 list()함수를 이용하여 생성

Ex)

> x <- list("kookmin","dna",100,TRUE);x # x 리스트 생성
[[1]]
[1] "kookmin"

[[2]]
[1] "dna"

[[3]]
[1] 100

[[4]]
[1] TRUE

> y <- list(univ = "kookmin", acad = "dna", score = 100, growth = TRUE);y # y 리스트 생성(이름 지정)
$univ
[1] "kookmin"

$acad
[1] "dna"

$score
[1] 100

$growth
[1] TRUE

3. 리스트의 인덱싱[편집]

리스트의 인덱싱은 다른 데이터 타입과 마찬가지로 []를 이용하여 인덱싱

[[]] 를 이용하여 키를 인덱싱하고, 이후에 []를 이용하여 값을 인덱싱

Ex)

> z <- list(c("a","b","c"),TRUE,c(1,2,3));z # z 리스트 생성
[[1]]
[1] "a" "b" "c"

[[2]]
[1] TRUE

[[3]]
[1] 1 2 3

> z[[3]][2] # z의 3번째 키에 2번째 값
[1] 2
> z[[1]][3] # z의 1번째 키에 3번째 값
[1] "c"

데이터 프레임[편집]

데이터 프레임(Data Frame)은 처리할 데이터를 엑셀의 스프레드시트와 같이 표 형태로 정리한 모습이다.

데이터 프레임은 R에서 가장 많이 쓰이는 데이터 타입이다.

최근에는 데이터 프레임과 유사한 형태이지만, 성능에서 우수한 데이터 테이블(Data table)이 더욱 각광 받고 있다.

1. 데이터 프레임의 특징[편집]

  1. 데이터 프레임의 경우 행과 열로 이루어진 데이터 타입이기 때문에 행의 개수가 일치 하지 않은 데이터 셋의 경우 생성되지 않는다.

2. 데이터 프레임의 생성[편집]

각각의 벡터를 생성한 후 결합 가능

Ex)

> id<-c(20130001, 20130002, 20130003, 20130004)
> name<-c("김길동", "이길동","홍길동" ,"양길동")
> study<-c("월","화","수","목")
> class<-data.frame(id, name, study, stringsAsFactors = FALSE)
> class
        id   name study
1 20130001 김길동    월
2 20130002 이길동    화
3 20130003 홍길동    수
4 20130004 양길동    목

3. 데이터 프레임의 접근[편집]

데이터 프레임의 각각의 열에 접근 할 때는 데이터프레임$열이름을 이용하여 접근한다.

Ex)

> class$id
[1] 20130001 20130002 20130003 20130004
> class$name
[1] "김길동" "이길동" "홍길동" "양길동"
> class$study
[1] "월" "화" "수" "목"

4. 데이터 프레임의 인덱싱[편집]

데이터 프레임의 인덱싱은 행렬의 인덱싱과 마찬가지로 []를 이용하여 인덱싱한다.

Ex)

> class[1,]
        id   name study
1 20130001 김길동    월
> class[,1]
[1] 20130001 20130002 20130003 20130004
> class[1:3,]
        id   name study
1 20130001 김길동    월
2 20130002 이길동    화
3 20130003 홍길동    수

5. 데이터 프레임의 수정[편집]

데이터 프레임의 수정은 인덱싱 후에 값을 설정함으로써 수정이 가능하다.

Ex)

> class$id[1]<-20139999
> class
        id   name study
1 20139999 김길동    월
2 20130002 이길동    화
3 20130003 홍길동    수
4 20130004 양길동    목
> class$name[1]<-"전민"
> class
        id   name study
1 20139999   전민    월
2 20130002 이길동    화
3 20130003 홍길동    수
4 20130004 양길동    목

6. 파일 입출력[편집]

대부분의 경우 데이터 프레임은 R 내에서 만들어서 사용하기 보다는 기존 파일을 읽어오는 경우가 일반적이다.

이를 위해서는 Working Directory를 설정하여 내가 불러오고자 하는 파일이 있는 곳을 설정한다.

> setwd("C:/Users/MJ/Documents") # working directory 설정
> getwd() # directory 확인
[1] "C:/Users/MJ/Documents"

# 파일 입력 함수
read.csv("파일이름.csv", header=TRUE, sep=".",stringAsFactors=FALSE) # csv 파일 입력
read.table("파일이름.형식", header= TRUE, sep=", or \t", stringAsFactors=FALSE) # table 파일 입력
read.delim("파일이름.형식", header= TRUE, sep="\t", stringAsFactors=FALSE) # csv, table 파일 구분없이 입력 가능

# 파일 출력(csv 파일로)
write.csv(변수, "파일이름.csv ", row.names=FALSE) # csv로 파일 저장

각주[편집]

  1. “The Comprehensive R Archive Network”. 2018년 4월 23일에 확인함. 
  2. R language and environment
    • Hornik, Kurt (2015년 11월 26일). “R FAQ”. 《The Comprehensive R Archive Network》. 2.1 What is R?. 2015년 12월 6일에 확인함. 
    R Foundation
    • Hornik, Kurt (2015년 11월 26일). “R FAQ”. 《The Comprehensive R Archive Network》. 2.13 What is the R Foundation?. 2015년 12월 6일에 확인함. 
    The R Core Team asks authors who use R in their data analysis to cite the software using:
    • R Core Team (2016). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. URL http://www.R-project.org/.

외부 링크[편집]