通过匹配字符向量从矩阵中选择行

时间:2017-02-24 08:25:54

标签: r

我有一个基因矩阵(行)和不同样本(列)的表达值。矩阵有25 000行,但我只想选择其中一些。我想查找并保留以特定字符串开头的行,请参阅下面的示例。 package scater vas用于生成带get_exprs()的矩阵。

这是矩阵的样本:

> get_exprs(sce,"exprs")[1:3,1:3]
               Bams.A10_R1.out.bam Bams.A11_R1.out.bam Bams.A12_R1.out.bam
ENSSSCG00000030218       -2.885387e-06       -2.885387e-06       -2.885387e-06
ENSSSCG00000029697       -2.885387e-06       -2.885387e-06       -2.885387e-06
ENSSSCG00000027726       -2.885387e-06       -2.885387e-06       -2.885387e-06

我创建了一个包含我感兴趣的字符串的向量,并尝试索引这些行,可行

> endo.markers<-c("ENSSSCG00000030218","ENSSSCG00000029697")
> get_exprs(sce,"exprs")[endo.markers,1:3]

               Bams.A10_R1.out.bam Bams.A11_R1.out.bam Bams.A12_R1.out.bam
ENSSSCG00000030218       -2.885387e-06       -2.885387e-06       -2.885387e-06
ENSSSCG00000029697       -2.885387e-06       -2.885387e-06       -2.885387e-06

但是,当我包含我感兴趣的所有基因时,我会收到以下错误:

> endo.markers<-scan("endo.markers.txt",character())
> get_exprs(sce,"exprs")[endo.markers,1:3]
  

get_exprs中的错误(sce,“exprs”)[endo.markers,1:3]:     下标超出范围

我认为其原因是我感兴趣的所有基因,即载体内切标记的所有元素都不存在于基质中。还有其他想法或解决方案?矢量似乎没问题,附在下面。

> scan("endo.markers.txt",character())
Read 46 items
 [1] "ENSSSCG00000012909" "ENSSSCG00000007675" "ENSSSCG00000015622" "ENSSSCG00000005625"
 [5] "ENSSSCG00000009320" "ENSSSCG00000008844" "ENSSSCG00000003950" "ENSSSCG00000007115"
 [9] "ENSSSCG00000008294" "ENSSSCG00000017277" "ENSSSCG00000015116" "ENSSSCT00000036466"
[13] "ENSSSCG00000005122" "ENSSSCG00000003527" "ENSSSCG00000030642" "ENSSSCG00000015753"
[17] "ENSSSCG00000021443" "ENSSSCG00000001695" "ENSSSCG00000005096" "ENSSSCG00000013297"
[21] "ENSSSCG00000017296" "ENSSSCG00000010404" "ENSSSCG00000013302" "ENSSSCG00000003017"
[25] "ENSSSCG00000006035" "ENSSSCG00000007927" "ENSSSCG00000015579" "ENSSSCG00000016504"
[29] "ENSSSCG00000012277" "ENSSSCG00000001404" "ENSSSCG00000008953" "ENSSSCG00000017164"
[33] "ENSSSCG00000017723" "ENSSSCG00000007436" "ENSSSCG00000013655" "ENSSSCG00000005533"
[37] "ENSSSCG00000027850" "ENSSSCG00000006862" "ENSSSCG00000025698" "ENSSSCG00000016009"
[41] "ENSSSCG00000016450" "ENSSSCG00000002039" "ENSSSCG00000006288" "ENSSSCG00000016174"
[45] "ENSSSCG00000002829" "ENSSSCG00000012909"

0 个答案:

没有答案