User Tools

Site Tools


Sidebar

This is the sidebar. Without it, the main text is too wide!

r_notes

정해영의 R 노트

Private 영역에 작성한 2019 R note도 상호 보완적인 관계에 있으니 계속 업데이트해 나갈 것.

유용한 글 링크

R graphics

Stack Overflow에 게시된 글

정해영의 블로그: 하루에 한 R 시리즈

짧은 팁

> .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를 사용하는 것을 지양한다.
    1. 가끔은 필요할 때가 있다(여러 csv 파일을 동시에 읽어들이기)
  • list를 잘 다루어야 한다.
  • list 내의 원소에 접근하는 방법을 정확히 알아야 한다.
  • 매트릭스 형태의 데이터를 다루는데 익숙해야 한다.
    1. column 및 row name
    2. slicing
    3. 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

샘플 데이터

r_notes.txt · Last modified: 2019/03/14 10:48 by hyjeong