打印两列匹配的子串匹配的行

时间:2016-01-30 16:53:49

标签: r substring

我想要在.列中V1之前的字符串为grep,而同一行的V2类似。例如,在下面的例子中,第1行就是这种情况。

我想我需要以某种方式使用gsub与== gsub( ".*$", "", out )

结合使用
> head(out)
                         V1                        V2                V3   V4
1  hsa-miR-99b-5p.dataSerum hsa-miR-99b-5p.dataTissue 0.261887741880618 <NA>
2 hsa-miR-99b-3p.dataTissue hsa-miR-99b-5p.dataTissue 0.979410208303266 <NA>
3 hsa-miR-99b-3p.dataTissue  hsa-miR-99b-5p.dataSerum 0.266705152258623 <NA>
4  hsa-miR-99b-3p.dataSerum hsa-miR-99b-5p.dataTissue 0.227329471105902 <NA>
5  hsa-miR-99b-3p.dataSerum  hsa-miR-99b-5p.dataSerum 0.944112218530823 <NA>
6  hsa-miR-99b-3p.dataSerum hsa-miR-99b-3p.dataTissue  0.20025336348038 <NA>

1 个答案:

答案 0 :(得分:1)

我们可以尝试sub。匹配模式点(\\.),后跟零个或多个字符(.*),并将其替换为''列,用于列&#39; V1&#39;和&#39; V2&#39;,然后使用==获取逻辑索引并对行进行子集化。

v1 <- sub('\\..*', '', out$V1)
v2 <- sub('\\..*', '', out$V2)

out[v1==v2,]
#                      V1                        V2        V3   V4
#1 hsa-miR-99b-5p.dataSerum hsa-miR-99b-5p.dataTissue 0.2618877 <NA>
#6 hsa-miR-99b-3p.dataSerum hsa-miR-99b-3p.dataTissue 0.2002534 <NA>