R語言基礎(chǔ)知識的一些檢驗,最好是對照幾本R基礎(chǔ)語法書籍來理解。
全部答案及視頻在:https://github.com/jmzeng1314/R_bilibili
首先做完了周末班工作按傅, 包括軟件安裝以及R包安裝:http://www.bio-info-trainee.com/3727.html
1.打開 Rstudio
告訴我它的工作目錄撰筷。
getwd()
2.新建6個向量茂蚓,基于不同的原子類型
胸懈。(重點是字符串,數(shù)值雏赦,邏輯值)
b<-"What's wrong"
aa<-1:10
c<-TRUE
3.告訴我在你打開的rstudio里面 getwd()
代碼運行后返回的是什么劫笙?
當前工作目錄
4.新建一些數(shù)據(jù)結(jié)構(gòu)芙扎,比如矩陣,數(shù)組填大,數(shù)據(jù)框戒洼,列表等(重點是數(shù)據(jù)框,矩陣)
newmatrix<-matrix(1:6, nrow = 2, ncol = 3)
newarray <- array(1:3, c(2,4))
pa1<-c(1,2,3,4)
ga1<-c(5,4,44,12)
pa2<-c(1,2,3,4)
ga2<-c(5,4,44,12)
pa3<-c(1,2,3,4)
ga3<-c(5,4,44,12)
newdata.frame <- data.frame(pa1,ga1,pa2,ga2,pa3,ga3)
newlist <- list(x = cars[,1], y = cars[,2])
newfactor <- factor(letters,ordered=TRUE)
5.在你新建的數(shù)據(jù)框進行切片操作允华,比如首先取第1圈浇,3行, 然后取第4靴寂,6列
newdata.frame[1:3,4:6]
6.使用data函數(shù)來加載R內(nèi)置數(shù)據(jù)集 rivers
描述它磷蜀。并且可以查看更多的R語言內(nèi)置的數(shù)據(jù)集:https://mp.weixin.qq.com/s/dZPbCXccTzuj0KkOL7R31g
data("rivers")
7.下載 https://www.ncbi.nlm.nih.gov/sra?term=SRP133642 里面的 RunInfo Table
文件讀入到R里面,了解這個數(shù)據(jù)框百炬,多少列褐隆,每一列都是什么屬性的元素。(參考B站生信小技巧獲取runinfo table) 這是一個單細胞轉(zhuǎn)錄組項目的數(shù)據(jù)剖踊,共768個細胞庶弃,如果你找不到RunInfo Table
文件,可以點擊下載德澈,然后讀入你的R里面也可以歇攻。
SraRunTable <- read.table("http://www.bio-info-trainee.com/tmp/5years/SraRunTable.txt",fill=TRUE,header = T,sep = "\t")
dim(SraRunTable)
class(colnames(SraRunTable))
8.下載 https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE111229 里面的樣本信息sample.csv
讀入到R里面,了解這個數(shù)據(jù)框梆造,多少列掉伏,每一列都是什么屬性的元素。(參考 https://mp.weixin.qq.com/s/fbHMNXOdwiQX5BAlci8brA 獲取樣本信息sample.csv)如果你實在是找不到樣本信息文件sample.csv澳窑,也可以點擊下載。
sample <- read.csv("sample.csv")
9.把前面兩個步驟的兩個表(RunInfo Table
文件供常,樣本信息sample.csv)關(guān)聯(lián)起來摊聋,使用merge函數(shù)。
d=merge(SraRunTable,sample,by.x = 'Sample_Name',by.y = 'Accession')
# 在merge這里堵了很長時間...最終是數(shù)據(jù)源的問題
# by.x = 'Sample_Name',by.y = 'Accession'這里的Sample_Name與Accession必須代表同樣的數(shù)據(jù)栈暇!
基于下午的統(tǒng)計可視化
1.對前面讀取的 RunInfo Table
文件在R里面探索其MBases列麻裁,包括 箱線圖(boxplot)和五分位數(shù)(fivenum),還有頻數(shù)圖(hist)源祈,以及密度圖(density) 煎源。
boxplot(MBases ~ MBytes, data = SraRunTable, col = "lightgray")
?fivenum;fivenum(SraRunTable$MBases)
plot(density(SraRunTable$MBases))
hist(SraRunTable$MBases)
plot(density(SraRunTable$MBases))
2.把前面讀取的樣本信息
表格的樣本名字根據(jù)下劃線分割
看第3列元素的統(tǒng)計情況。第三列代表該樣本所在的plate
e <- d[,c("MBases","Title")]
plate=unlist(lapply(as.character(e[,2]),function(x){
# x=e[,2]
x
strsplit(x,'_')[[1]][3]
}))
# 試一下去掉as.character是什么效果 考慮為什么 出錯就?一下
table(plate)
boxplot(e[,1]~plate)
3.根據(jù)plate把關(guān)聯(lián)到的 RunInfo Table
信息的MBases列分組檢驗是否有統(tǒng)計學顯著的差異香缺。
t.test(e[,1]~plate)
4.分組繪制箱線圖(boxplot)手销,頻數(shù)圖(hist),以及密度圖(density) 图张。
使用ggplot2把上面的圖進行重新繪制锋拖。
e$plate=plate
library(ggplot2)
colnames(e)
ggplot(e,aes(x=plate,y=MBases))+geom_boxplot()
5.使用ggpubr把上面的圖進行重新繪制诈悍。
library(ggpubr)
p <- ggboxplot(e, x = "plate", y = "MBases",
color = "plate", palette = "jco",
add = "jitter")
# Add p-value
p + stat_compare_means(method = 't.test')
6.隨機取384個MBases信息,跟前面的兩個plate的信息組合成新的數(shù)據(jù)框兽埃,第一列是分組侥钳,第二列是MBases,總共是384*3行數(shù)據(jù)柄错。
indexes <- sample (nrow (e), 384)
data <- e [indexes, ]
data2 <- data[,c(3,1,2)]
dim(data2)
很奇怪舷夺,我在typora里寫好之后直接復制到簡書,代碼前面會出現(xiàn)亂碼售貌,先復制到r给猾,再傳遞過來就沒事了。
參考來源:生信技能樹
友情鏈接:
課程分享
生信技能樹全球公益巡講
(https://mp.weixin.qq.com/s/E9ykuIbc-2Ja9HOY0bn_6g)
B站公益74小時生信工程師教學視頻合輯
(https://mp.weixin.qq.com/s/IyFK7l_WBAiUgqQi8O7Hxw)
招學徒:
(https://mp.weixin.qq.com/s/KgbilzXnFjbKKunuw7NVfw)
歡迎關(guān)注公眾號:青島生信菜鳥團