在R中生成所有可能的kmers

时间:2018-03-06 15:33:22

标签: r

我有一个字母或符号向量,比如base = c('A','T','G','C'),是否有更短更有效的方式(现有函数)来生成所有给定k的可能k-mers,除了使用嵌套for循环或sapply?

3 个答案:

答案 0 :(得分:1)

您可以使用var tobj1 = { name: playername // this comes from an inputfield }

在基地R中执行此操作
expand.grid

答案 1 :(得分:0)

使用permutations

中的gtools功能

一个例子:

bases=c('A','T','G','C')
#load library
library("gtools")
permutations(n=length(bases),r=3,v=bases,repeats.allowed=T)
     [,1] [,2] [,3]
 [1,] "A"  "A"  "A" 
 [2,] "A"  "A"  "C" 
 [3,] "A"  "A"  "G" 
 [4,] "A"  "A"  "T" 
 [5,] "A"  "C"  "A" 
 [6,] "A"  "C"  "C" 
 [7,] "A"  "C"  "G" 
 [8,] "A"  "C"  "T" 
 [9,] "A"  "G"  "A" 
[10,] "A"  "G"  "C" 
[11,] "A"  "G"  "G" 
[12,] "A"  "G"  "T" 
[13,] "A"  "T"  "A" 
[14,] "A"  "T"  "C" 
[15,] "A"  "T"  "G" 
[16,] "A"  "T"  "T" 
[17,] "C"  "A"  "A" 
[18,] "C"  "A"  "C" 
[19,] "C"  "A"  "G" 
[20,] "C"  "A"  "T" 
[21,] "C"  "C"  "A" 
[22,] "C"  "C"  "C" 
[23,] "C"  "C"  "G" 
[24,] "C"  "C"  "T" 
[25,] "C"  "G"  "A" 
[26,] "C"  "G"  "C" 
[27,] "C"  "G"  "G" 
[28,] "C"  "G"  "T" 
[29,] "C"  "T"  "A" 
[30,] "C"  "T"  "C" 
[31,] "C"  "T"  "G" 
[32,] "C"  "T"  "T" 
[33,] "G"  "A"  "A" 
[34,] "G"  "A"  "C" 
[35,] "G"  "A"  "G" 
[36,] "G"  "A"  "T" 
[37,] "G"  "C"  "A" 
[38,] "G"  "C"  "C" 
[39,] "G"  "C"  "G" 
[40,] "G"  "C"  "T" 
[41,] "G"  "G"  "A" 
[42,] "G"  "G"  "C" 
[43,] "G"  "G"  "G" 
[44,] "G"  "G"  "T" 
[45,] "G"  "T"  "A" 
[46,] "G"  "T"  "C" 
[47,] "G"  "T"  "G" 
[48,] "G"  "T"  "T" 
[49,] "T"  "A"  "A" 
[50,] "T"  "A"  "C" 
[51,] "T"  "A"  "G" 
[52,] "T"  "A"  "T" 
[53,] "T"  "C"  "A" 
[54,] "T"  "C"  "C" 
[55,] "T"  "C"  "G" 
[56,] "T"  "C"  "T" 
[57,] "T"  "G"  "A" 
[58,] "T"  "G"  "C" 
[59,] "T"  "G"  "G" 
[60,] "T"  "G"  "T" 
[61,] "T"  "T"  "A" 
[62,] "T"  "T"  "C" 
[63,] "T"  "T"  "G" 
[64,] "T"  "T"  "T" 

答案 2 :(得分:0)

gtoolspermutation功能允许重复采样。

  

要使用大于45的n值,您需要增加R的递归限制。有关如何执行此操作的详细信息,请参阅options命令的expression参数。

library(gtools)

bases <- c("A","T","C","G")
permutations(n = length(bases), v = bases, r = 3, repeats.allowed = T)
#     [,1] [,2] [,3]
# [1,] "A"  "A"  "A" 
# [2,] "A"  "A"  "C" 
# [3,] "A"  "A"  "G" 
# [4,] "A"  "A"  "T" 
# [5,] "A"  "C"  "A" 
# [6,] "A"  "C"  "C" 
# [7,] "A"  "C"  "G" 
# [8,] "A"  "C"  "T" 
# [9,] "A"  "G"  "A" 
# [10,] "A"  "G"  "C" 
# [11,] "A"  "G"  "G" 
# [12,] "A"  "G"  "T" 
# [13,] "A"  "T"  "A" 
# [14,] "A"  "T"  "C" 
# [15,] "A"  "T"  "G" 
# [16,] "A"  "T"  "T" 
# [17,] "C"  "A"  "A" 
# [18,] "C"  "A"  "C" 
# [19,] "C"  "A"  "G" 
# [20,] "C"  "A"  "T" 
# [21,] "C"  "C"  "A" 
# [22,] "C"  "C"  "C" 
# [23,] "C"  "C"  "G" 
# [24,] "C"  "C"  "T" 
# [25,] "C"  "G"  "A" 
# [26,] "C"  "G"  "C" 
# [27,] "C"  "G"  "G" 
# [28,] "C"  "G"  "T" 
# [29,] "C"  "T"  "A" 
# [30,] "C"  "T"  "C" 
# [31,] "C"  "T"  "G" 
# [32,] "C"  "T"  "T" 
# [33,] "G"  "A"  "A" 
# [34,] "G"  "A"  "C" 
# [35,] "G"  "A"  "G" 
# [36,] "G"  "A"  "T" 
# [37,] "G"  "C"  "A" 
# [38,] "G"  "C"  "C" 
# [39,] "G"  "C"  "G" 
# [40,] "G"  "C"  "T" 
# [41,] "G"  "G"  "A" 
# [42,] "G"  "G"  "C" 
# [43,] "G"  "G"  "G" 
# [44,] "G"  "G"  "T" 
# [45,] "G"  "T"  "A" 
# [46,] "G"  "T"  "C" 
# [47,] "G"  "T"  "G" 
# [48,] "G"  "T"  "T" 
# [49,] "T"  "A"  "A" 
# [50,] "T"  "A"  "C" 
# [51,] "T"  "A"  "G" 
# [52,] "T"  "A"  "T" 
# [53,] "T"  "C"  "A" 
# [54,] "T"  "C"  "C" 
# [55,] "T"  "C"  "G" 
# [56,] "T"  "C"  "T" 
# [57,] "T"  "G"  "A" 
# [58,] "T"  "G"  "C" 
# [59,] "T"  "G"  "G" 
# [60,] "T"  "G"  "T" 
# [61,] "T"  "T"  "A" 
# [62,] "T"  "T"  "C" 
# [63,] "T"  "T"  "G" 
# [64,] "T"  "T"  "T" 

要使用combn,您需要根据k的大小复制bases,然后用unqique包装来做一些小技巧。

k <- 3
unique(t(combn(rep(bases, k), m = k)))
#      [,1] [,2] [,3]
# [1,] "A"  "T"  "C" 
# [2,] "A"  "T"  "G" 
# [3,] "A"  "T"  "A" 
# [4,] "A"  "T"  "T" 
# [5,] "A"  "C"  "G" 
# [6,] "A"  "C"  "A" 
# [7,] "A"  "C"  "T" 
# [8,] "A"  "C"  "C" 
# [9,] "A"  "G"  "A" 
# [10,] "A"  "G"  "T" 
# [11,] "A"  "G"  "C" 
# [12,] "A"  "G"  "G" 
# [13,] "A"  "A"  "T" 
# [14,] "A"  "A"  "C" 
# [15,] "A"  "A"  "G" 
# [16,] "A"  "A"  "A" 
# [17,] "T"  "C"  "G" 
# [18,] "T"  "C"  "A" 
# [19,] "T"  "C"  "T" 
# [20,] "T"  "C"  "C" 
# [21,] "T"  "G"  "A" 
# [22,] "T"  "G"  "T" 
# [23,] "T"  "G"  "C" 
# [24,] "T"  "G"  "G" 
# [25,] "T"  "A"  "T" 
# [26,] "T"  "A"  "C" 
# [27,] "T"  "A"  "G" 
# [28,] "T"  "A"  "A" 
# [29,] "T"  "T"  "C" 
# [30,] "T"  "T"  "G" 
# [31,] "T"  "T"  "A" 
# [32,] "T"  "T"  "T" 
# [33,] "C"  "G"  "A" 
# [34,] "C"  "G"  "T" 
# [35,] "C"  "G"  "C" 
# [36,] "C"  "G"  "G" 
# [37,] "C"  "A"  "T" 
# [38,] "C"  "A"  "C" 
# [39,] "C"  "A"  "G" 
# [40,] "C"  "A"  "A" 
# [41,] "C"  "T"  "C" 
# [42,] "C"  "T"  "G" 
# [43,] "C"  "T"  "A" 
# [44,] "C"  "T"  "T" 
# [45,] "C"  "C"  "G" 
# [46,] "C"  "C"  "A" 
# [47,] "C"  "C"  "T" 
# [48,] "C"  "C"  "C" 
# [49,] "G"  "A"  "T" 
# [50,] "G"  "A"  "C" 
# [51,] "G"  "A"  "G" 
# [52,] "G"  "A"  "A" 
# [53,] "G"  "T"  "C" 
# [54,] "G"  "T"  "G" 
# [55,] "G"  "T"  "A" 
# [56,] "G"  "T"  "T" 
# [57,] "G"  "C"  "G" 
# [58,] "G"  "C"  "A" 
# [59,] "G"  "C"  "T" 
# [60,] "G"  "C"  "C" 
# [61,] "G"  "G"  "A" 
# [62,] "G"  "G"  "T" 
# [63,] "G"  "G"  "C" 
# [64,] "G"  "G"  "G"