R (프로그래밍 언어)
패키지
#
Find similar titles
- 최초 작성자
- 최근 업데이트
Structured data
- Category
- Software
Table of Contents
R package #
R은 open source 프로그램으로써 자유로운 함수 구현이 가능하다. 이러한 함수들의 묶음을 package라 한다. 사용자는 R 언어로 작성된 모든 package를 실행과 함께 모두 메모리에 올려놓을 필요 없이 때에 맞게 불러와 사용하게 된다. 기본적으로 package는 메뉴얼이 작성되어 있으며 콘솔 내에서 확인이 가능하다(인터넷 연결이 필요 없다.) R에서 package의 의미는 다양하나 많은 경우 package 안의 특정 함수를 불러오기 위한 경우이다.
R package installation #
R에서 원하는 package를 다운받기 위해서 아래 두 함수를 사용한다.
1. > install.packages("패키지명")
2. > BiocManager::install("패키지명")
첫 번째는 R의 기본적인 통계, 시각과 텍스트 마이닝 등 패키지는 첫 번째 함수를 이용한다. 두 번째는 생물데이터 분석과 관련된 package는 bioconductor라는 archive로부터 다운받는다. 대부분은 함수 간 의존성 문제는 debug 스크립트를 통해 제공되며 필요한 package를 다운받음으로써 해결된다.
원하는 package가 설치되었다면 함수를 사용기 위해 현재 환경에 로딩해야 한다.
> library("패키지명")
패키지 전체를 사용하지 않는 경우 아래와 같이 사용한다.
> 패키지명::함수명(...)
R package는 개개인이 작성하였기 때문에 이후 사용법에 대해서는 아래와 같은 방법으로 R 프로그램 내에서 확인하거나 인터넷 검색을 통해 manual을 숙지하면 된다. 예제를 통해 R package의 설치 및 사용에 대해 알아보도록 하자.
> ?패키지명 or 함수명
VennDiagram
package를 이용한 다중 벤다이어그램 그리기 #
벤다이어그램(Venn diagram)은 몇몇 집합에서 공통되는 원소들의 수를 나타내는 데 주로 이용되는 다이어그램 중 하나이다. 생물정보학에서는 주로 근연종들 사이에서 ortholog gene과 specific gene들의 수를 표현하거나, 공통 발현되는 DEG의 수를 나타내고자 할 때 이용되곤 한다.
하지만 집합이 4개 이상일 경우 공통집합의 수가 많아져 공통 원소를 추출하는 것도 어렵고 가시화 하는 것도 어려운데 이 경우 아래 패키지를 이용하면 쉽게 벤다이어그램을 그릴 수 있다.
예제 데이터는 아래 링크에서 받을 수 있다. http://www.insilicogen.com/blog/attachment/1019620370.txt
패키지 loading #
#!R
> BiocManager::install("limma")
> library(limma)
> library(gplots)
데이터 loading #
#!R
> rfn <- "ortholog_example.txt"
> data <- read.table(rfn, sep=`\t`, header=T, row.names=1)
> data
Species.A Species.B Species.C Species.D
Clu8 BO016496 BH047N18.14
Clu9 BO014834 RS013419 AT18397457
Clu3 BO014772 RS018960 AT15242221 BH042D24.27
Clu12 BO009902
Clu1 BO008537 AT15242224 BR143G12.16
Clu5 BO008364 RS038406 BH059G16.7
Clu4 BO008360 RS000136 BH006K11.24
Clu20 BO006059 RS040196 AT79324947
Clu13 BO005849 AT15234929 BH064P04.2
Clu7 BO005339 RS002816
Clu19 RS001238 AT15221666 BH015M19.22
Clu6 RS007302
Clu2 BH059C07.32
Clu18 RS008453 AT18420250
Clu17 AT18412659 BH065N19.8
Clu16 RS002645 AT186503429
Clu15 AT18416334 BH001M22.33
Clu14 RS005812 AT145358042 BH050H15.17
Clu11 AT15219226
Clu10 RS004647 BH027F23_27
데이터 형식 변환 #
벤다이어그램을 그리는 데 사용할 명령어는 vennCounts()
와 venn()
이다. 이 명령어들은 logical value
로 이루어진 data.frame
형식의 데이터를 입력받는다. logical value
는 True
또는 FALSE
, 즉 참이다
, 거짓이다
, 또는 있다
, 없다
를 표현하는 값이란 의미이다.
불러온 데이터는 그냥 요소(factor)들로 구성되어 있다. 이 데이터에서 값이 있으면 참, 없으면 거짓으로 바꿔 ld라는 변수에 저장시킨다.
#!R
> ld <- (data != "")
> ld
Species.A Species.B Species.C Species.D
Clu8 TRUE FALSE FALSE TRUE
Clu9 TRUE TRUE TRUE FALSE
Clu3 TRUE TRUE TRUE TRUE
Clu12 TRUE FALSE FALSE FALSE
Clu1 TRUE FALSE TRUE TRUE
Clu5 TRUE TRUE FALSE TRUE
Clu4 TRUE TRUE FALSE TRUE
Clu20 TRUE TRUE TRUE FALSE
Clu13 TRUE FALSE TRUE TRUE
Clu7 TRUE TRUE FALSE FALSE
Clu19 FALSE TRUE TRUE TRUE
Clu6 FALSE TRUE FALSE FALSE
Clu2 FALSE FALSE FALSE TRUE
Clu18 FALSE TRUE TRUE FALSE
Clu17 FALSE FALSE TRUE TRUE
Clu16 FALSE TRUE TRUE FALSE
Clu15 FALSE FALSE TRUE TRUE
Clu14 FALSE TRUE TRUE TRUE
Clu11 FALSE FALSE TRUE FALSE
Clu10 FALSE TRUE FALSE TRUE
이렇게 변환된 데이터 ld
를 as.data.frame
라는 명령어를 이용해 data.frame
이라는 형식으로 변환시켜 ld.df
라는 변수에 저장한다.
#!R
> ld.df <- as.data.frame(ld)
> ld.df
Species.A Species.B Species.C Species.D
Clu8 TRUE FALSE FALSE TRUE
Clu9 TRUE TRUE TRUE FALSE
Clu3 TRUE TRUE TRUE TRUE
Clu12 TRUE FALSE FALSE FALSE
Clu1 TRUE FALSE TRUE TRUE
Clu5 TRUE TRUE FALSE TRUE
Clu4 TRUE TRUE FALSE TRUE
Clu20 TRUE TRUE TRUE FALSE
Clu13 TRUE FALSE TRUE TRUE
Clu7 TRUE TRUE FALSE FALSE
Clu19 FALSE TRUE TRUE TRUE
Clu6 FALSE TRUE FALSE FALSE
Clu2 FALSE FALSE FALSE TRUE
Clu18 FALSE TRUE TRUE FALSE
Clu17 FALSE FALSE TRUE TRUE
Clu16 FALSE TRUE TRUE FALSE
Clu15 FALSE FALSE TRUE TRUE
Clu14 FALSE TRUE TRUE TRUE
Clu11 FALSE FALSE TRUE FALSE
Clu10 FALSE TRUE FALSE TRUE
특별히 바뀐 게 없어 보이지만, class()
명령어를 이용해 data.frame 형식으로 바꾸기 전후를 비교해 보면 무엇이 바뀌었는지 알 수 있다. data
를 logical value
로 변환시키면 그 결과는 matrix
라는 형식으로 출력된다. 이를 as.data.frame()
이라는 명령어로 data.frame
형식으로 바꿔 ld.df
라는 변수에 저장을 시킨 상태이다.
#!R
> class(ld)
[1] "matrix"
> class(ld.df)
[1] "data.frame"
각 집합 및 교집합들의 유전자 수 알아내기 #
예제 데이터를 보면 어떤 유전자들은 특정 종에서만 나타나는 유전자이고, 어떤 유전자는 다른 종에서도 ortholog 관계의 유전자가 있다고 한다. 즉 크게 보면 4개의 집합이 있고, 4개의 집합으로 만들어질 수 있는 부분집합(교집합들과 각 집합의 유니크한 원소만 나타내는 부분집합) 16개가 있다. 이 부분집합들에 해당하는 유전자 수를 테이블 형태로 확인하는 명령어가 vennCounts()
이다. 이 명령어에 ld.df
를 입력하면 아래와 같은 결과가 출력된다.
첫 번째 줄을 보면 모든 집합(종에서도)에서 없는(0
) 원소의 수가 가장 오른쪽 Counts
열에 0개 있다고 출력되어 있다. 두 번째 줄은 다른 종에서는 없고(0
) Species.D
에서만 있는(1
) 원소의 수가 1개 있다고 한다. 15번째 줄은 Species.A
, Species.B
, Species.C
에서 공통으로 ortholog 관계의 유전자가 2개 있다고 출력되어 있다.
#!R
> vennCounts(ld.df)
Species.A Species.B Species.C Species.D Counts
[1,] 0 0 0 0 0
[2,] 0 0 0 1 1
[3,] 0 0 1 0 1
[4,] 0 0 1 1 2
[5,] 0 1 0 0 1
[6,] 0 1 0 1 1
[7,] 0 1 1 0 2
[8,] 0 1 1 1 2
[9,] 1 0 0 0 1
[10,] 1 0 0 1 1
[11,] 1 0 1 0 0
[12,] 1 0 1 1 2
[13,] 1 1 0 0 1
[14,] 1 1 0 1 2
[15,] 1 1 1 0 2
[16,] 1 1 1 1 1
attr(,"class")
[1] "VennCounts"
벤다이어그램을 그리기 #
이렇게 준비된 데이터를 벤다이어그램으로 그려주는 명령어는 venn()
이다. 아래 명령을 실행해 보면 자동으로 카운팅된 교집합에 해당하는 원소들의 수가 알맞은 칸에 배치된 벤다이어그램이 출력된다. 이렇게 출력된 그림은 창 크기를 적당히 조절해서 사이즈를 조절한 다음 마우스 오른쪽 버튼으로 클릭하면 그림 파일로 저장하거나 복사해서 파워포인트로 붙여넣어 이용할 수 있다.
venn()
은 최대 5개 집합의 데이터만 받아 벤다이어그램을 그려준다.
#!R
> venn(ld.df)
기타 벤다이어그램을 그리는 패키지 #
venn
http://cran.r-project.org/web/packages/gplots/
bvenn
http://cran.r-project.org/web/packages/bvenn/index.html
colorfulVennPlot
http://cran.r-project.org/web/packages/colorfulVennPlot/index.html
eVenn
http://cran.r-project.org/web/packages/eVenn/index.html
VennDiagram
http://cran.r-project.org/web/packages/VennDiagram/VennDiagram.pdf
Venneuler
http://cran.r-project.org/web/packages/venneuler/index.html
Vennerable
http://goo.gl/YjQCc
마치며 #
R에서 package를 제대로 활용하는 방법은 바로 목적하는 값이 무엇인지 명확히 파악하는 것이다. 우선 적합한 package를 찾고 나면 메뉴얼 내 예제 데이터를 이용해 입력 값과 출력 값의 구조 및 성분을 파악한다. 이후 내가 가진 데이터의 형태를 해당 package의 입력 형태에 맞춘 후 실행한다. R package는 제작의 자율성이 보장되는 만큼 될 수 있으면 관련 문헌 정보가 있는 것을 사용하는 것이 좋다. 또 사용자 커뮤니티가 활성화돼있기 때문에 문제의 여지가 있는 package의 경우 사전에 파악하는 것이 좋다.
Reference #
Suggested Pages #
- 0.025 R (체스)
- 0.025 R (수학)
- 0.013 CSV
- 0.013 실수
- More suggestions...