r - 如何根据模式匹配在 R 中为数据点着色?

标签 r bioinformatics

我有一个具有以下形式的数据框:

             V1 V2                       V3          V4       V5         V6       V7           V8
1 0610007C21Rik  -   chr5:31351012-31356737 1.33732e-05 0.752381  0.9965090 0.000000 1.777419e-05
2 0610007L01Rik  - chr5:130695613-130717165 1.67168e+00 1.673120  0.0000000 3.453930 4.997847e-01
3 0610007P08Rik  -  chr13:63916627-64000808 7.06033e-01 0.000000  0.0815767 0.318051 1.000000e+00
4 0610007P14Rik  -  chr12:87157066-87165495 0.00000e+00 0.000000  0.0000000 5.494230          NaN
5 0610007P22Rik  -  chr17:25377114-25379603 4.99696e+00 0.908254  0.9076130 3.639250 8.461946e-01
6 0610009B22Rik  -  chr11:51499151-51502136 6.53363e-01 8.500980 13.5797000 0.000000 7.137192e-02

我正在使用以下命令绘制 log2(V4) 与 log2(V5) 的图:

plot(log2(df[,4]) ~ log2(df[,5]), xlim=c(0,10), ylim=c(0,10))

我想根据 V1 中的模式匹配为点着色。例如,如何将 0610007C21Rik 和 0610007L01Rik 着色为绿色,以及 0610007P22Rik 和 0610007P14Rik 着色为红色? 我尝试过向数据框中添加指定颜色的另一列,但必须有一种更简单的方法。

最佳答案

这是一个基本的 R 解决方案:

df$V1 的每个唯一值将颜色列表定义为命名向量一次。请注意每个要着色的点名称周围的 ""

col.list <- c(
              "0610007C21Rik"="green",
              "0610007L01Rik"="green",
              "0610007P22Rik"="red",
              "0610007P14Rik"="red"
             )

然后使用 df$V1 进行绘图,以查找刚刚定义的 col.list 向量中的值。

plot(
     log2(df[,4]) ~ log2(df[,5]), 
     xlim=c(0,10),
     ylim=c(0,10),
     col=col.list[paste(df$V1)]
    )

要解决下面OP的评论,请在plot调用中使用它:

... col=ifelse(df$V1 %in% names(col.list),col.list[paste(df$V1)],"black")

这使得完整的调用看起来像:

plot( 
      log2(df[,4]) ~ log2(df[,5]),
      xlim=c(0,10),
      ylim=c(0,10),
      col=ifelse(df$V1 %in% names(col.list),col.list[paste(df$V1)],"black")
    )

关于r - 如何根据模式匹配在 R 中为数据点着色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11171817/

相关文章:

r - 使用 :=, 时为什么默认使用 with=TRUE?

regex - 如何匹配两个 .csv 文件并写入第三个文件,用文件 1 中的数据替换文件 2 中的数据

r - 根据另一个数据帧的行对一个数据帧的列进行子集

删除异常值无法运行 cor.test()

r - 使用 R 计算文本文件中单词的出现次数

r - 以 Shiny 的形式下载 rpivotTable 输出

command-line - 从 Illumina BaseSpace 下载数据

r - 使用 lubridate 根据日期创建因子

python-3.x - 使用 scikit-bio 阅读 fastq 的最快方法

bioinformatics - 运行 bowtie2 时 breseq 出错