一、长矩阵和宽矩阵
每个变量单独成一列的为宽矩阵,例如:
N A C T G pos
1 0.00044 0.21212 0.26264 0.05120 0.47360 1
2 0.00000 0.18766 0.28970 0.32026 0.20238 2
3 0.00000 0.19334 0.32042 0.27598 0.21026 3
4 0.00000 0.14242 0.38242 0.32514 0.15002 4
5 0.00000 0.33694 0.17736 0.30862 0.17708 5
6 0.00000 0.31716 0.15932 0.14728 0.37624 6
而长数据中变量的NACTG五种碱基类型并没有单独列成一列,而是整合在同一列。
pos variable value
1 1 G 0.47360
2 5 G 0.17708
3 9 G 0.25448
4 13 G 0.32480
5 17 G 0.25384
6 21 G 0.25868
7 25 G 0.25894
8 29 G 0.24990
9 33 G 0.25688
0 37 G 0.25468
上面两个矩阵表达的内容相同,宽矩阵人类好读懂,长矩阵计算机方便处理,长矩阵中一列代表变量类型,另外一列表示对用的变量值。我们的ggplot对于长矩阵的画图相当方便。
Wide- to long-format data: the melt function
首先查看一下数据:
head(res_per)
N A C T G pos
1 0.00044 0.21212 0.26264 0.05120 0.47360 1
2 0.00000 0.18766 0.28970 0.32026 0.20238 2
3 0.00000 0.19334 0.32042 0.27598 0.21026 3
4 0.00000 0.14242 0.38242 0.32514 0.15002 4
5 0.00000 0.33694 0.17736 0.30862 0.17708 5
6 0.00000 0.31716 0.15932 0.14728 0.37624 6
使用melt进行转换
res_per <- rbind.data.frame(gc_cont(R1),gc_cont(R2))
res_per$pos <- 1:nrow(res_per)
res_final <- melt(res_per,id.vars = c("pos"))
head(res_final)
pos variable value
1 1 N 0.00044
2 2 N 0.00000
3 3 N 0.00000
4 4 N 0.00000
5 5 N 0.00000
6 6 N 0.00000
之后 我们可以方便的进行绘图了~
还有些长款矩阵的互换的参数调整,我先挖个坑 争取两三天更新此文 谢谢。
网友评论