2014-11-25 82 views
-1

我有一個DNA序列列表,我想混合這些內容。
假設dna_lst:R中DNA(列表)的混合內容

[1] AATTAATTCC 
[2] ATCGATCG 
[3] TTTAACCCCCGG 

我要生成混合DNA含量,如:dna_mix:

[1] TACAATTACT 
[2] CATGCTAG 
[3] CCTGATCTCGAC 

我怎麼能做到這一點的R'
謝謝。

+0

是混合是隨機的? – 2014-11-25 09:18:43

+0

@DavidArenburg是的,隨機混合。但它必須保持內容的比例。 – Cina 2014-11-25 09:36:11

+0

不知道什麼是內容的比例。此外,您的數據集 – 2014-11-25 09:37:22

回答

1

類似的東西:如果你想要什麼

dna_mix<-sapply(dna_lst,function(dna){paste(sample(strsplit(dna,"")[[1]]),collapse="")}) 

可以工作是一個「隨機混合」

> dna_mix 
    AATTAATTCC  ATCGATCG TTTAACCCCCGG 
    "TTTATCAAAC"  "TAACCGGT" "CTACTCACGGTC" 

與因素的列表(如果每個序列是列表的元素) :

lapply(dna_lst,function(dna){paste(sample(strsplit(as.character(dna),"")[[1]]),collapse="")}) 

應該工作。

+0

收到錯誤:'strsplit(dna,「」):非字符參數'錯誤。我的數據集是一個因素。 – Cina 2014-11-25 09:58:15

+0

@Cina,你能編輯你的問題,並把你的數據完全一樣嗎?這將更容易回答正確的方式。實際上,它看起來像是我的一個角色矢量......(dput(dna_lst)的輸出可以) – Cath 2014-11-25 10:05:21

+0

@Cina,可以用'lapply'版本嗎?這將有助於瞭解你的列表是如何構建的(每個元素有一個序列?一個元素包含所有3個序列?) – Cath 2014-11-25 10:10:09

1

一種可能性:

sapply(strsplit(as.character(dna_lst), ""), function(x) paste(sample(x), collapse = "")) 
+0

我收到錯誤'錯誤在sapply(strsplit(dna_lst,「」),函數(x)粘貼(樣本(x),崩潰=「」)): 錯誤評估參數'X'在選擇方法函數'sapply':錯誤strsplit(dna,「」):非字符參數'我正在使用因子列表。我的數據集非常龐大。我轉換爲字符,並再次出現相同的錯誤 – Cina 2014-11-25 09:53:23

+0

@Cina查看更新。 – 2014-11-25 10:07:49