R语言绘制曼哈顿图给染色体分配颜色

 

方法1:

1、利用match函数实现

> dir()
[1] "dat.map"
> map <- read.table("dat.map")
> map                                     ## map文件
  V1     V2
1  1  55910
2  1  85204
3  1 122948
4  2 167127
5  2 176079
6  2 361433
7  3 144010
8  3 199910
9  3 234281
> col <- c("red", "black", "purple")     ## 备用颜色
> names(col) <- 1:3
> col
       1        2        3 
   "red"  "black" "purple" 
> idx <- match(map$V1, names(col))       ## 构建颜色索引
> map$col <- col[idx]                    ## 分配颜色
> map
  V1     V2    col
1  1  55910    red
2  1  85204    red
3  1 122948    red
4  2 167127  black
5  2 176079  black
6  2 361433  black
7  3 144010 purple
8  3 199910 purple
9  3 234281 purple

 

2、方法2,利用for循环 + if判断实现

> dir()
[1] "dat.map"
> map <- read.table("dat.map")
> map                                   ## map文件
  V1     V2
1  1  55910
2  1  85204
3  1 122948
4  2 167127
5  2 176079
6  2 361433
7  3 144010
8  3 199910
9  3 234281
> col <- c("red", "black", "cyan")     ## 备用颜色
> for (i in 1:3) {                     ## 利用二重for循环 + if语句实现
+   for (j in 1:nrow(map)) {
+     if (map[,1][j] == i) {
+       map$col[j] = col[i]
+     }
+   }
+ }
> map
  V1     V2   col
1  1  55910   red
2  1  85204   red
3  1 122948   red
4  2 167127 black
5  2 176079 black
6  2 361433 black
7  3 144010  cyan
8  3 199910  cyan
9  3 234281  cyan

 

posted @ 2022-05-14 00:02  小鲨鱼2018  阅读(225)  评论(0编辑  收藏  举报