學習生物信息學,我需要掌握哪些內容?
持續更新ing..... 最後更新時間:2019/4/18 10:28 AM
1.linux命令
1.1 linux的許可權
許可權:
eg: 7=4+2+1 #代表w+r+x許可權
1.2 幫助文件
man(詳細講解)和--help(使用語法簡介)
1.3 目錄操作
ls -r #反序排列
ls -sh # 顯示目錄文件大小
ls -d a* #查看以a開頭的目錄或文件
cd ~ #切換到當前用戶目錄
cd - #切換到上一次進入目錄
mkdir #創建空目錄
mkdir -p #創建多級目錄
rmdir -p #刪除空目錄
touch #創建文件
rm -r #刪除目錄及目錄下文件
1.4 文件操作
cp #複製文件
cp -r #複製目錄及目錄中的文件
mv #移動/重命名 文件/目錄:如果輸入目錄和輸出目錄一樣則是改名字。
1.5 文件編輯
1.5.1 VI編輯器
- 底行模式
set nu:列出行號/ charactor:查找字元wq:寫入並退出q1:強制退出,不會保存修改
cat #查看文件內容,一次性輸出
cat 1.txt > 2.txt #1.txt 文件內容取代2.txt文件
cat 1.txt >> 2.txt # 1.txt 文件插入2.txt文件末尾
1.5.2 less/more
less / more #分頁查看文件內容
less -m #顯示百分比
less -N #顯示行號
/charactor #查看模式下,向下查找字元。向上是 ?character
b #查看模式下下一頁,下半頁是d
less -mN
1.5.3 wc/head
head / tail #查看文件的頭部/ 尾部
wc # 顯示文件行數、字數
wc -l <file> #輸出文件行數
wc -c <file> #輸出文件位元組數
wc -w <file> #輸出文件位元組數
wc -L <file> #輸出文件最長的一行
ls |wc -l #文件下有多少文件和目錄
1.5.4 grep
grep <str> #文件查找,並輸出匹配行
grep -c <str> #輸出有幾行匹配上了
grep -i <str> #不區分大小寫
grep -n <str> #顯示匹配行及其行數
grep -v <str> #不顯示匹配行
grep --color #檢索詞加顏色,可以和-i -n 等一起用
grep -n --color "the" 2.txt #結果如下

grep "t[ea]st" 2.txt #匹配test 或者tast
grep ^or$ #匹配行首或者行尾
grep [^a]n #匹配除an外含有n的行
grep ^[TI] #匹配以T或者I開頭的行
grep ^[^a-zA-Z] #不匹配字母開始的行
1.5.5 sort
sort -n #依據數值大小排序
sort -0 <file> #排序結果存入制定文件
sort -r #反序排列
sort -k #以哪個區間排列
sort -c #檢查文件是否按照序列排序
cat file1 file2 | sort | uniq > file3 #兩文件並集
cat file1 file2 | sort | uniq -d > file3 #兩文件交集
cat file1 file2 | sort | uniq -u > file3 #刪除交集,留下各自補集
1.5.6 sed
sed -n #列出經過sed處理過的一行
sed -e #直接在命令行模式進行sed動作編輯
sed -i #直接對原文編輯
sed [參數] comand 輸入源文本
sed -n 1~2 p a.txt #a.txt第一行起始,2行為步長輸出到屏幕(P)。奇數行。
sed -n 1,+2 p a.txt #a.txt第一行起始,起始行後的連續+2行。即前三行。
sed -n /primary_transcript/,+4 p genome.gff #包含 primary_transcript 字元文本的一行及其後4行。
sed 1,3 s/e/E/g a.txt #對1-3行進行e到E的替換
sed -e 1~2 d a.txt #刪除奇數行
sed -e 1,/^chr3/ d a.txt #定位:從1行開始到以chr3開頭到行。操作:刪除
sed ^$ d a.txt #定位:空白行。操作:刪除
sed 2 a AT3GGO5780 GO:0000167 a.txt #定位:第二行。操作:在第二行後追加一行。(在第二行之前是i)
1.5.6.1 sed的定位
- sed 第一行表示:
1 - 最後一行表示:
$ - 正則匹配:
/REGEXP/ - 步長處理:
first~step - 選擇選定行和後面幾行:
addr,+N
1.5.6.2 sed的正則表達
1.5.6.3 sed的操作命令
- a 在當前後添加一行
- i 在當前行前添加一行
- d 刪除行
- g 取緩存空間覆蓋原有內容
- p 列印行
- ! 對選擇之外對行執行sed
- s 字元串替換
1.5.7 cut
cut -c 2-4 2.txt #2.txt文件每行第2-4共三個字元截取
cut -d - -f 2 2.txt #2.txt文件以「-」為分割製表,每行第二列輸出.-d <charactor>是指定分割符。默認是tab鍵
在linux的shell中「tab」鍵表達方式是control+V+I
1.5.8 文件操作-正則表達
- 行首定位符:
^:ls | grep "^Green";grep "^RBM4" 2.txt - 行為定位符:
$:ls | grep "1$" - 限定符:
*:前面字元出現0次或多次。>=0+:前面字元出現1次或多次。>=1?:前面字元出現0次或一次。=0 OR =1 - 字符集:
[ ]:任意一個字元,數字和字母之間可用-連接表示範圍。[abc];[0-9];[a-z];[a-zA-Z]。(a | b | c) = [abc]。[^ ]: 字元非匹配。[^abc]不匹配a|b|c任意一個。
正則表達練習網站:https://regexr.com/
━┉┉┉┉∞┉┉┉┉━━┉┉┉┉∞┉┉┉┉━━┉┉┉┉∞┉┉┉┉━━┉ ●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞
2. 測序結果的比對定量
2.1 比對原理的介紹
2.1.1 BWT演算法學習
需要進一步深入學習
2.1.2 hisat2軟體優勢
速度比較快,準確率高。
2.2 bowtie2和hisat2的使用
2.2.1索引構建
hisat2-build Escherichia_coli.fa ./Escherichia_coli
#hisat2對大腸桿菌基因組進行索引構建
bowtie2-build Escherichia_coli.fa ./Escherichia_coli
#bowtie2對大腸桿菌基因組進行索引構建
2.2.2進行比對
hisat2 -x Escherichia_coli -1 E_coli_1.test.clean.fq.gz -2 E_coli_2.test.clean.fq.gz --un-conc-gz ./E_coli_bowtie_unmap.fq.gz 2 > ./E_coli_bowtie_align.log | samtools sort -O BAM --threads 4 -o ./E_coli_bowtie_.bam
# -x 指定基因組索引
# -1 / -2 雙端測序文件
# --un-conc-gz 將沒有匹配的序列存儲到文件
# > 將結果輸出到log文件
# -O FORMAT 設置最終輸出的文件格式,可以是bam,sam或者cram,默認為bam
# -o 設置最後的文件名
# --threads 設置線程數
bowtie2 -x Escherichia_coli -1 E_coli_1.test.clean.fq.gz -2 E_coli_2.test.clean.fq.gz --un-conc-gz ./E_coli_hisat_unmap.fq.gz 2> ./E_coli_hisat_align.log | samtools sort -O BAM --threads 4 -o ./E_coli_hisat_.bam
#注釋同上
2.3 計數
2.3.1 why featurecount?
- featurecount對特徵區域終止位置鹼基處理更準確(與htseq相比)
- htseq對multmap處理更準確。a基因兩reads匹配而b基因只有一個read匹配的話,則reads會匹配到a基因。而htseq則記錄為multimap
- 更快。比htseq快22倍左右,內存佔用為htseq的1/6
2.3.2 count
featureCounts -T 4 -F GTF -t exon -g gene_id -s 0 -Q 10 -C -B -p -a Escherichia_coli.exon.gtf -o ./feature_count.txt E_coli.bam
# -T 線程數
# -F 參考基因注釋文件格式默認GTF
# -t 指定gtf注釋文件的feature類型。exon 即feature(count的對象)。默認將exon作為一個feature
# -g 指定meta-feature類型。即從注釋文件中提取Meta-features信息用於read count,默認是gene_id
# -s 特異性建庫
# -Q 質量控制。控制比對reads最小質量值。默認0
# -C 捨棄掉非正常匹配:paired read比對到不同染色體上或者相同染色體但不同鏈上
# -B paired reads都成功比對到參考基因組的reads才計數
# -p 針對的是雙端測序
# -a 基因組注釋文件GTF/GFF
# -o 輸出文件
featureCounts -T 6 -p -t exon -g gene_id -a anno.gtf -o SRR_fCount.txt SRR.bam
#官網的示例表達簡寫
2.3.3 結果文件的提取
cut -f 1,7 feature_count.txt |grep -v ^# >featureCounts.txt
# 提取第一列(Gene_id)和第七列(counts)數據。並去除空行。輸出到文本文件
下一步是差異基因分析。通過實驗組和對照組的counts文件比對來分析DE:差異基因。 然後是差異基因的選擇。通過設置合適的差異基因篩選條件。padj<0.05,|log2FC|>=1(無生物重複)。 篩選出合適的DE然後進行GO和KEGG分析。
━┉┉┉┉∞┉┉┉┉━━┉┉┉┉∞┉┉┉┉━━┉┉┉┉∞┉┉┉┉━━┉ ●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞
3 生物網站
3.1 NCBI-BLAST
blast訪問地址
3.1.1 blast的使用
如圖所示,blast分為blastn / blastp / blastx / tblastn / tblastx
3.1.2 常用子資料庫
- NR資料庫:非冗餘蛋白庫,所有 GenBank+EMBL+DDBJ+PDB中的非冗餘蛋白序列,對於所有已知的或可能的編碼序列, NR記錄中都給出了相應的氨基酸序列以及專門蛋白 資料庫中的序列號NR庫相當於一個以核酸序列為基礎的交叉索引,將核酸數據和蛋白數 據聯繫起來NT是NR的子集。(引自ppt) - RefSeq資料庫:參考序列資料庫,包含RefSeq_genomic, RefSeq_protein和RefSeq transpans,即具有生物意義上的非冗餘基因,轉錄本和蛋白質序 列,是經過NCBI和其他組織校正的資料庫,包括了官方的基因符號和可選的符號。(引自ppt)
3.2 Ensembl資料庫
EMBL-EBI資料庫包括Ensembl資料庫(脊椎動物資料庫)和Ensembl Genome(非脊椎動物全基因組資料庫)資料庫。
Ensembl資料庫中人類基因組和注釋文件下載
進入Ensembl首頁點擊上方導航欄的download進入下載界面,可以選擇兩種方式下載。可以點擊通過FTP下載。進入/pub/目錄。選擇最新的數據文件。例如截止2019/3目前最新的是release-95。/pub/release-95/下多種基因序列文件。基因組選擇fasta/。注釋文件可以選擇gtf/。若要獲取基因組文件,依次打開/pub/release-95/fasta/homo_sapiens/dna/選擇相應文件下載。如果需要RNA-seq比對可以選擇Homo_sapiens.GRCh38.dna_rm.toplevel.fa.gz下載。若要獲取注釋文件,依次打開/pub/release-95/gtf/homo_sapiens/需要RNA-seq回帖參考,可以選擇Homo_sapiens.GRCh38.95.gtf.gz下載。
3.3 UCSC
隨著眾多物種基因組測序的完成,僅僅以純文本的方式存儲 和展示基因組DNA字元將無法滿足對測序數據的研究,因此, UCSC應用而生。UCSC能夠滿足在任何尺度上快速地查詢和顯示 基因組的內容,以及對基因組序列進行注釋,注釋內容可以在一個 窗口中顯示所有與某一基因組區域相關的信息:定位和序列信息、 已知基因和預測基因、表型和文獻支持、mRNA和EST、調控 (CpG島)、比較基因組信息、SNP、基因組重複元件等。(引自ppt)
3.4 pfam-蛋白質結構預測
需要進一步深入學習
━┉┉┉┉∞┉┉┉┉━━┉┉┉┉∞┉┉┉┉━━┉┉┉┉∞┉┉┉┉━━┉ ●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞ ∞●∞
4. R語言基礎
4.1 常用函數
head() #查看文件開頭前十行.查看尾端信息是tail
summary() #統計總結。包括最小值,1/4位值,中位數,平均數,3/4位值,最大值
dim() #顯示緯度。eg.輸出結果是 150 5 代表有150行5列。
model() #顯示對象類型
max() #顯示最大值,最小值是 min()
sort() #篩選排序。
sort(iris$Sepal.Length,decreasing = T) #iris數據的Sepal.Length列按照大到小排序(從小到大是decreasing = T)
which.max() #返回最大值大索引下標。最小值是which.min()
iris$Sepal.Length[which.max(iris$Sepal.Length)] #等價於max(iris$Sepal.Length)
median() #輸出中位數
length() #顯示對象中元素個數。length(iris)=5;length(iris$Sepal.Length)=150
var() #求數據的方差
sum() #對數據求和
t() #轉換表格的坐標軸直接轉換。
4.2 數據類型
R中的對象(數據集合):向量、矩陣、數據框、數組、列表。 對象的五種基本類型:字元型(character)、數值型(numeric,包括小數 )、整型(integer)、複數型(complex)、邏輯型(logical,TRUE/FALSE) 對象的屬性:名字(names,dimnames),維度(dimensions, 包括矩陣等),類別(class,包括數字、整數等), 長度(length) attributes() 查看對象屬性,沒有屬性返回NULL
4.2.1 向量
向量的創建
a <- c(1,2,3,4) # 為a賦值numeric 數值型
b <- c(1:4) #為b賦值integer數值型
c <- c("hello","world") #賦值charac字元型
d <- c(TURE,FALSE) #賦值為logical邏輯型
向量元素的訪問
a <- c(11:20)
#生成以一個整形向量,11~20共十個元素
a
#列出a的所有元素
a[1]
#訪問a中第一個元素即 11
a[c(1,3,5,7)]
#訪問a中第1,3,5,7個元素,注意是 a[c(1,3,5,7)] ,而不是 a[1,3,5,7] 這是矩陣的訪問格式
a[3:8]
#訪問a中第3~8個元素
4.2.3 矩陣
- 矩陣只能包含一種數據類型,如數值型。
- 有二維性
4.2.3.1 矩陣的創建
1.
x <- matrix(data = c(11:30) , nrow = 5 , ncol = 4 , byrow = FALSE)
#matix 創建向量
#data=c(11:30) 數據輸入
#nrow = 5,ncol = 4 有5行4列
#byrow = FALSE 依據列填充,依據行填充是 byrow = TRUE
2.
y <- c(11:20) #向量型y
y #查看向量型y內容
dim(y) #查看y的緯度信息
dim(y) <- c(2,5) #重新定義緯度信息2行5列
dim(y) #顯示變數y的緯度信息
y #查看矩陣y的信息

3.
z1 <- c(11:13)
z2 <- c(21:23)
z <- cbind(z1,z2) #通過列對齊,對向量z1,z2合併.行對齊是rbind
dim(z)
4.2.3.2 矩陣訪問
x <- matrix(data = c(11:30), nrow = 5, ncol = 4, byrow = FALSE)
#創建矩陣
x[3,3]
#訪問第3行第3列元素
x[3,]
#訪問第3行所有元素
x[,3]
#訪問第3列所有元素
x[3]
#訪問第3個元素,順序與矩陣生成byrow參數有關
x[1:2,]
#顯示前兩行元素
x[,3:4]
#顯示第3到4列元素
#------------------------------------------------------------------#
#對於有標題到矩陣可以直接通過標題訪問
y <- matrix(data = c(11:30),nrow = 5,ncol = 4,byrow = FALSE,dimnames = list(c(r1,r2,r3,r4,r5),c(c1,c2,c3,c4)))
# 創建矩陣的過程中重命名行索引名稱、列索引名稱.如果不設置行名,可以填寫NULL
y[r3,c3]
#訪問第r3行r3列元素
4.2.4 數據框(生信常用)
- 可以存放多種數據的矩陣
4.2.4.1 數據框的創建
transcript_id <- c(TUCP_1,TUCP_2,lncRNA_1,lncRNA_2)
# 創建字元型向量
treat <- c(1,2,3,4)
#創建數值型向量
control <- c(5,6,7,8)
# 創建向量
chr <- c(chr1,chr2,chr3,chr4)
# 創建向量chr
testdata <- data.frame(transcript_id,teat,ctrol,chr)
# 創建數據框testdata
dim(testdata)
# 查看數據框testdata的維度信息
#--------------------#
#也可以為資料庫添加題頭
tdaddrowname <- data.frame(transcript_id,treat,control,chr,row.names = c(r1,r2,r3,r4))
# 為創建的數據框tdaddrowname更換行索引
4.2.4.1 數據框的訪問
taddrowname
#查看數據框的內容
tdaddrowname[,2:3]
#顯示數據框中的第2列、第3列數據
tdaddrowname[c(transcript_id,chr)]
#選取多列
#矩陣訪問的方式同樣使用於數據框的訪問
tdaddrowname$transcript_id
#如果數據框有列名,可以是直接使用$直接調用該列,直接調用該列
#------------------------------------#
inform <- names(tdaddrowname) %in% c(trancript_id,chr)
#names()獲取對象的或者設置對象的名稱
#%in%相當於match()函數的一個縮寫。用來判斷一個數組或矩陣是否包含在另一個數組或矩陣里。
#A %in% B,若A中元素有和B中相匹配,則返回邏輯型 TURE,不匹配則返回邏輯型 FALSE
newtd <- tdaddtowname[!inform]
#反向選擇非匹配的列
newtd
#查看
4.2.5 數組
- 數組通常是三緯的
數組的創建
x1 <- array(data = c(11:30))
#創建一緯數組
x2 <- array(data = c(11:30),dim = c(4,5))
#創建二維數組
length(x2)
#查看元素個數
dim(x2)
#查看緯度信息
x3 <- array(data = c(11:37),dim = (3,3,3))
#創建三維數組
x3 <- array(data = c(11:37),dim = c(3,3,3),dimname = list(c(r1,r2,r3),c(c1,c2,c3),c(m1,m2,m3)))
#創建有索引標題的三維數組
length(x3)
dim(x3)
x3
#查看 x3 的屬性和元素
數組的訪問
x1
#一緯數組的訪問和向量訪問一樣
x2[2,3]
x2[1,]
#二維數組的訪問和矩陣的訪問方法一致
x3[r1,c2,m3]
#依據索引訪問元素
x3[1,2,3]
#依據元素的緯度信息訪問元素
x3[,,3]
#依據緯度信息,訪問第三面的所有元素
x3[,c2,]
#依據索引,訪問所有面第二列元素
4.2.6 列表
- 可以包含各種不同類型對象
- 列表(list)內容中的代碼引自ppt
xlist <- list(c(1:5),matrix(data = c(1:10),nrow = 2,ncol = 5,byrow = FALSE),123,TRUE)
# 定義新列表
length(xlist)
# 查看列表中的元素個數
xlist
# 查看列表xlist的全部信息
dim(xlist)
# 列表沒有維度信息
dim(xlist) <- c(2,2)
dim(xlist)
class(xlist)
# 一旦給列表添加了維度信息,等價於轉換成了矩陣格式
############# list訪問 ############
xlist <- list(c(1:5),matrix(data = c(1:10),nrow = 2,ncol = 5,byrow = FALSE),123,TRUE)
# 定義新列表
xlist[[1]]
# 訪問第一個元素
class(xlist[[1]])
# 屬於向量中的範疇,可以在此基礎上進行「向量訪問」
xlist[[1]][2:4]
# 訪問列表第一個元素(向量類型)的第2至5的元素
xlist[[2]][1,3]
# 訪問列表中矩陣元素的第一行、第三列的元素
xlist[[2]][2,]
# 訪問列表中矩陣元素的第二行所有數據信息
xlist[[c(2,4)]]
# 列表第二個元素的第4個元素
4.3 數據處理
4.3.1 數據導入
- 常用
read.table()函數
xlsdata1 <- read.table(file = "FPKM.xls",header = TRUE, sep = , stringsAsFactors = FALSE,row.names = 1)
# read.table 讀取文件
# file="FPKM.xls" 要讀取的文件
## header=TRUE 讀取表頭
## sep= 設置列間隔是tab
# stringsAsFactors = FALSE #不作為因子?
## row.names = 1 設置行標題為第一列
4.3.2 數據導出
write.table(x = iris,file = test_iris1.xls,append = FALSE,sep = ,row.names = FALSE)
# write.table() 數據導出
# x=iris 數據集
# file = test_iris1.xls 導出文件名
# append = FALSE 不以追加模式導出
# sep= 分隔符是TAB
# row.name=FALSE 不導出行名
4.3.3 預設值處理
- 預設值會影響數據的處理
- 對於NA值是錯誤、遺失的數據,NULL是不存在的,不佔用空間,不會列於計算之中
- 當向量數據中存在NA值,sum()結果也是NA值
先定位再處理
x <- c(1,3,NA,7)
# 賦值向量
is.na(x)
### 查詢x中元素是否有NA值,如果是則在該元素緯度坐標中返回TURE,不是返回FALSE
table(is.na(x))
### table()可以對元素進行統計並計數。
sum(x,na.rm = TRUE)
## 在統計向量時候通過 na.rm = TRUE 來移除 NA 值,很多函數都有這個選項
x[which(is.na(x))] <- 0
### which()函數返回符合條件的響應位置,which(is.na(x))會返回TURE對位置
# which(b[,3]==1.7) 查詢b的第三列中數值是1.7的位置
# 把NA位置選出然後用0代替
# 還可以使用 x[is.na(x)] <- 0 來代替NA
其他方法處理NA值
test <- data.frame(x=c(1,2,3,4,NA),y=c(6,7,NA,8,9))
# 構建數據框
which(is.na(test),arr.ind = T)
### which(is.na(test)) 可以匹配NA值,arr.ind =T 可以返回相應返回行列坐標,適用於多維數據。如果沒有arr.ind = T 則返回一個序列數。
test[which(is.na(test),arr.ind = T)] <- 0
#結合which進行多維數據類型的缺失替代
na.omit(test)
## 可以直接刪除NA值所在的一行數據
4.3.4 數據拆分與合併
stack()
data(PlantGrowth) #載入數據
fomula(PlantGrowth) #查看格式
pg <- unstack(PlantGrowth)
# 將數據去堆棧排列
stack(pg)
# 將多列多數據堆棧排列
stack(pg,select = ctrl)
# 選擇名為 ctrl 的特定向量
stack(pg,select = -ctrl)
# 選擇並刪除向量
## stack只使用於向量數據類型?
cbind / rbind()
x <- matrix(data = c(1:10),nrow = 5, ncol = 2)
y <- matrix(data = c(21:30),nrow = 2,ncol = 5)
xyr <- rbind(x,y)
# 將 x,y 依據行方向結合在一起
xyc <- cbind(x,y)
# 將x,y 依據列方向結合在一起
## cbind & rbind 結合的必須是相匹配的 例如cbind 需要列一致
merge()
ID <- c(1,2,3,4)
name <- c(li,zhang,zhou,wu)
score <- c(23,45,67,98)
st1 <- data.frame(ID,name)
st2<-data.frame(ID,score)
st <- merge(st1, st2, by = ID)
# 按照ID的對應關係將st1 st2的信息合併
merge(ink1,ink2,by="id",all=T)
#所有數據列都放進來,空缺的補值為NA
merge(ink1,ink2,by="id",all=F)
#默認,只取兩者的共有的部分
subset()
filedata <- read.table(file = "FPKM.xls",header = TRUE,sep = ,stringsAsFactors = FALSE)
class(filedata)
dim(filedata)
summary(filedata)
newset <- subset(x = filedata , subset = (treat2 > 100),select = treat1:control3)
#subset 依據要求返迴向量、矩陣、數據框的子集
#x=filedata 數據輸入
#subset = (treat2 > 100) 選取treat2一列大於100的元素
#select = treat1:control3 界定選取子集的 元素/範圍/哪幾列
melt
- reshape2包
names <- c(A,B,C)
yuwen <- c(87,67,98)
shuxue <- c(78,69,88)
yingyu <- c(56,64,77)
xingbie <- c(F,M,F)
chengjidan <- data.frame(names,yuwen,shuxue,yingyu,xingbie)
chengjidan
newtable <- melt(data = chengjidan,id.vars = c(names,xingbie),variable.name = kemu,value.name = fenshu)
4.3.5 數據的匹配
R語言中有多種函數支持正則表達匹配,其中比較常用的是grep、gsub、grepl
#完整的grep參數
grep(pattern, x, ignore.case = FALSE, perl = FALSE, value = FALSE, fixed = FALSE, useBytes = FALSE, invert = FALSE)
#grep() 查找特定格式元素。查找,存在參數value,返回結果是匹配項的下標
#pattern 正則表達式
#x 字元向量
#ignore.case=FALSE 默認選項式FALSE表示區分大小寫,不區分式TURE
#perl=FALSE 默認false,表示兼容perl正則表達
#fixed=FALSE 如果為TRUE,pattern是要匹配的字元串。覆蓋所有衝突的參數
#useBytes=FALSE 默認選項FALSE,TURE情況下是逐位元組匹配而不是逐字元匹配
#invert = FALSE 如果是TURE則不返回元素索引或值
string1 <- qwewertyuioplkjhjnmbvc,fdsaa,email:[email protected]
string2 <- 112351426325637,tel:0643-3445676,tel:0654-6778877,7655263529987352414099827tel:72625637784383726
grepl("[a-z]+@[0-9]+.c(n|om)",string1)
#匹配 『字母@數字.com』或者字母@數字.cn格式的元素,有的話返回TURE
grepl("[0-9]+-[0-9]+",string2)
#匹配 『數字+-+數字』格式的元素
5. R語言繪圖
R語言的四套圖形系統:base、grid、lattice、ggplot2。隨著ggplot2的發展越來越成為主流。
5.1 繪圖參數表示方式
5.1.1利用元素屬性直接更改
常用?元素屬性可以直接通過元素參數設置
5.1.2 屬性.元素

部分元素如下

因此。col.main 即 標題的顏色;cex.main 標題的縮放倍數;font.sub 副標題的字體樣式。等等
5.1.3 自定義屬性需要用到函數修改
一些特異性屬性需要用到函數來修改 如legend(location, title, legend, ...)來修改圖例的屬性
5.2 R語言繪圖常用軟體包概述
5.2.1 畫圖軟體
5.3 ggplot2概述
ggplot2特點 - 圖層設計 - 統計變換 - 擴展包豐富
5.3.1 ggplot2 圖形部件
- 數據(data)和映射(mapping) 反應的是數據/元素和圖形對應關係
- 標度(scale) 標度負責控制映射後圖形屬性的顯示方式 ,具體形式上來看是圖例和坐標刻度(引自ppt)
- 幾何對象(Geometric) 圖像中的元素,控制繪製的圖形類型
- 統計變換 對原始數據進行某種計算,例如對二元散點圖加上一 條回歸線
- 坐標系統 坐標系統控制坐標軸並影響所有圖形元素,坐標軸可 以進行變換以滿足不同的需要 可以通過變換坐標系統,繪製餅圖、極坐標圖
- 圖層系統 數據、映射、幾何對象、統計變換等構成一個圖層 圖層可以允許用戶一步步的構建圖形,方便單獨對圖層進行修改
- 分面 控制分組繪圖的方法和排列形式,將數據按某種方式分組,然後分別繪圖
5.3.2 ggplot2作圖思路
- 數據映射
- 標度,圖例
- 統計變換
- 圖層,分面
- 美化
5.3.3 圖形元素

以上圖為例,有以下元素 - axis.title 坐標軸標題 - axis.line 坐標軸線 - axis.text 坐標軸標示 - axis.text.bar 坐標軸bar - panel 面板 - panel.grid 面板網格 - panel.background 面板背景 - legend 圖例 - legend.title 圖例標題 - legend.text 圖例內容 - legend.key
5.4 R語言繪製柱狀圖
library(ggplot2)
setwd("~/SUPER QUN/3.2.2") #設置工作目錄
fp <- read.table("FPKM.xls",header = T ,row.name = 1) #讀取目錄
head(fp)
bar <- ggplot(fp) + geom_bar(aes(x = category, fill = strand),posirion = "fill")
#ggplot(fp) 指定作圖文件為fp
#geom_bar() 是ggplot2中一種作圖的軟體。作用是通過映射,用條形圖的高度來展示數值多少
#aes(x=category,fill=strand) 表示映射關係,橫軸展示分類,通過填充不同顏色來區分strand 這裡也可以吧映射放到ggplot(fp,aes())裡面,但是這樣相當於全局映射,不便於添加其他元素和映射
#position="fill" 表示strand裡面兩個元素的展示方式。可以有三種方式"stack"(堆疊),"dodge"(並列顯示)和"fill"(百分比填充),默認為"stack"。
#這裡面是ggplot自動統計來正負鏈個數
5.5 R語言繪製富集分析柱形圖
待續。。本專欄持續更新,您的關注支持會是對我的莫大鼓勵。我也會更加努力推出更優質易讀的文章。
如果您覺得本專欄對您有些許幫助或者啟發,將是我的莫大榮幸。
推薦閱讀:
