r_notes
Table of Contents
정해영의 R 노트
Private 영역에 작성한 2019 R note도 상호 보완적인 관계에 있으니 계속 업데이트해 나갈 것.
유용한 글 링크
- Advanced R by Hadley Wickham ⇐ 강력 추천!
- 설치된 패키지의 로드 - require()와 library()의 차이점 require()의 경우 미설치 패키지를 불러다 설치까지 한다(?)
- R Friend R 단일 모집단 분석과 정규성 검정
R graphics
Stack Overflow에 게시된 글
정해영의 블로그: 하루에 한 R 시리즈
KGOL 강좌 수강 노트
짧은 팁
> .Platform > graphics.off() # 모든 그림 화면 끄기 > rm(list=ls()) # Removes all objects from the current workspace (R memory) > search() # 설치된 패키지 확인 > edit(var) # 데이터 편집기
긴 팁(코드 조각)
질문 리스트
- class(), mode(), str()
- rownames() vs. row.names()
- names() vs. colnames(): data frame의 경우 동일함
꼭 알아야 할 개념과 기술 목록
- loop를 사용하는 것을 지양한다.
- 가끔은 필요할 때가 있다(여러 csv 파일을 동시에 읽어들이기)
- list를 잘 다루어야 한다.
- list 내의 원소에 접근하는 방법을 정확히 알아야 한다.
- 매트릭스 형태의 데이터를 다루는데 익숙해야 한다.
- column 및 row name
- slicing
- apply()를 적절히 사용할 줄 알아야 한다.
- Graphics: plot area, margin 등의 개념을 이해하고 잘 조절할 줄 알아야 한다.
활용 사례
CSV 파일의 병합
데이터프레임-행과 열의 이름 일괄 변경
데이터프레임-행과 열의 이름을 통한 조작
데이터프레임-특정 조건을 충족하는 데이터의 추출
antiSMASH 데이터셋을 사용한다. 첫 줄의 '#'는 삭제할 것.
$ wget http://genoglobe.kr/kribb/_media/asdb_search_results.zip $ unzip asdb_search_results.zip $ cp asdb_search_results.csv asdb_search_results.csv.bak $ awk '{gsub("^#", ""); print}' asdb_search_results.csv.bak > asdb_search_results.csv
data = read.table("asdb_search_results.csv",sep="\t",header=T) # by column index data[,6] data[,c(1,2,3)] data[,1:5] # by column name data$Strain # 반환되는 것은 factor strain.nr = levels(data$Strain) # strain이 몇 가지나 되는가? data[which(names(data) == "Strain")] # 반환되는 것은 data frame data[names(data) == "Strain"] # which()를 쓰지 않아도 작동은 한다. data[which(names(data) == "NCBI.accession")] # 다른 사례 data[which(names(data) %in% c("Strain","Species"))] # 여러 컬럼을 추출하기 sel.col = c("Strain","NCBI.accession","From","To","BGC.type") data[which(names(data) %in% sel.col)] # Genus와 Species 컬럼을 결합하고 문자열 치환하기 data$Species = paste(data$Genus, data$Species, sep=" ") data = data[,-1] data$Species = gsub("Unclassified", "sp.", data$Species) # 다음과 같이 해도 된다. #data[,2] = paste(data[,1], data[,2], sep=" ") #data = data[,-1] #data[,1] = gsub("Unclassified", "sp.", data[,1]) # 조건에 맞는 row 전체 혹은 일부 컬럼만 추출하기 data[which(data$Strain == "E681"),] # do not omit comma! data[which(data$Strain == "E681"), names(data) == "Most.similar.known.cluster"] # how to extract multiple strains? sel.str = c("E681","M1","CR1") data[which(data$Strain %in% sel.str),] # working! data[which(data$Strain %in% sel.str), names(data) == "Most.similar.known.cluster"] # logical indexing L = data$Strain == "E681" data[L,] data[L,]$NCBI.accession # using subset() function subset(data, Strain == "E681") subset(data, Strain == "E681", select = c("Strain","From","To")) # restict to specified columns subset(data, Strain = c("E681","M1","CR1")) # not working! subset(data, Strain %in% c("E681,"CR1")) # not working # use dplyr() for advanced applications
데이터프레임- row-wise maximum
샘플 데이터
- ANI percentage identity (pyani) - 12 Lactobacillus rhamnosus genomes. col/row label의 형식은 “Lactobacillus_rhamnosus_BFE5264_GCF_001988935.1”이다.
- anib_percentage_identity_lactobacillus_rhamnosus.zip(pyani) - 12 Lactobacillus rhamnosus genomes. col/row label의 형식은 “Lactobacillus_rhamnosus_BFE5264_GCF_001988935.1”이다.
- ANI percent identity (pyani) - 51 Paenibacillus genomes. col/row label의 형식은 “GCF_000146875.3”이다.
- antiSMASH db file source link - search result using the keyword “Paenibacillus”
r_notes.txt · Last modified: 2022/05/11 15:30 by hyjeong