将序列与相似的基因ID组合

时间:2013-09-03 17:23:03

标签: r string bioinformatics

我有一个基因ID列表及其在R中的序列。

$2435
[1]"ATGCGGGCGGGGGTCGTCGA"

$2435
[1]"ATGCGGCGCGCGCGCTATATACGC"

$2435
[1]"ATGCGGCGCCTCTCATCGCGGGGG"

我想将序列与R中该列表中相同的基因ID结合起来。

$2435
[1]"ATGCGGGCGGGGGTCGTCGAATGCGGCGCGCGCGCTATATACGCATGCGGCGCCTCTCATCGCGGGGG"

3 个答案:

答案 0 :(得分:2)

将名称与lapply匹配后使用unique。以下是一些示例数据:

A <- list("12" = "AAAABBBBCCCCDDDD",
          "34" = "GGGG",
          "12" = "XXXXXXXXXXXXXXXXXXXXXXX",
          "10" = "FFFFGGGG",
          "10" = "HHHHIIII")
A
# $`12`
# [1] "AAAABBBBCCCCDDDD"
# 
# $`34`
# [1] "GGGG"
# 
# $`12`
# [1] "XXXXXXXXXXXXXXXXXXXXXXX"
# 
# $`10`
# [1] "FFFFGGGG"
# 
# $`10`
# [1] "HHHHIIII"

将相关的namespaste放在一起进行子集。

lapply(unique(names(A)), function(x) paste(A[names(A) %in% x], collapse = ""))
# [[1]]
# [1] "AAAABBBBCCCCDDDDXXXXXXXXXXXXXXXXXXXXXXX"
# 
# [[2]]
# [1] "GGGG"
# 
# [[3]]
# [1] "FFFFGGGGHHHHIIII"

答案 1 :(得分:2)

l <- list("A" = "ABC", "B" = "XYX", "A" = "DEF", "C" = "YZY", "A" = "GHI")
tapply(l, names(l), paste, collapse = "", simplify = FALSE)
# $A
# [1] "ABCDEFGHI"
# 
# $B
# [1] "XYX"
# 
# $C
# [1] "YZY"

答案 2 :(得分:2)

加成:

对于数据框输出,请使用:

aggregate(unlist(A), by=list(id=names(A)), paste, collapse="")

您列出的是A

使用@ Ananda的A,我明白了:

  id                                       x
1 10                        FFFFGGGGHHHHIIII
2 12 AAAABBBBCCCCDDDDXXXXXXXXXXXXXXXXXXXXXXX
3 34                                    GGGG