2012-10-05 119 views
-1

我想從44.400個基因的宇宙中創建1000個隨機列表中的1652個基因。 我決定更換。我使用下面的指令來創建隨機列表:更換的隨機列表

randomMatrix<-replicate(1000, sample(gene_list, 1652, replace = T)) 

重點是在每個列表中複製一個基因。對於我的研究,基因可以在列表之間複製,但不在每個列表中複製。我如何強制不復制每個單子中的基因?

在此先感謝

+1

我們喜歡[可重現的例子](http://stackoverflow.com/q/5963269)這裏。 – rinni

回答

0

一個reproducible example將是很好的說明你的問題,因爲你沒有給我們這樣的例子,我只是假設一個List並提出了一些複製

List <- list(c(2,1,3,4,5,6), c(1,4,5,7,0,6), c(2,4,7,9,3,1)) 
set.seed(001) 
replicate(3, lapply(List, sample, 7, replace=TRUE), simplify = FALSE) 

產生

[[1]] 
[[1]][[1]] 
[1] 1 3 4 6 1 6 6 

[[1]][[2]] 
[1] 7 7 1 4 4 0 5 

[[1]][[3]] 
[1] 3 7 3 1 7 3 1 


[[2]] 
[[2]][[1]] 
[1] 1 4 2 1 3 2 3 

[[2]][[2]] 
[1] 6 5 5 7 5 4 0 

[[2]][[3]] 
[1] 3 3 2 3 7 3 9 


[[3]] 
[[3]][[1]] 
[1] 5 4 4 5 2 3 5 

[[3]][[2]] 
[1] 0 5 6 5 4 1 1 

[[3]][[3]] 
[1] 4 9 9 7 1 4 7 

請注意,此方法將爲您的原始列表中的每個元素提供重新採樣數據(包含替換)這就是爲什麼每個複製都是一個由三個元素組成的列表。

如果你寫sapply而不是lapplyreplicate(...)輸出結果會更好。

set.seed(001) 
replicate(3, sapply(List, sample, 7, replace=TRUE), simplify = FALSE) 
[[1]] 
    [,1] [,2] [,3] 
[1,] 1 7 3 
[2,] 3 7 7 
[3,] 4 1 3 
[4,] 6 4 1 
[5,] 1 4 7 
[6,] 6 0 3 
[7,] 6 5 1 

[[2]] 
    [,1] [,2] [,3] 
[1,] 1 6 3 
[2,] 4 5 3 
[3,] 2 5 2 
[4,] 1 7 3 
[5,] 3 5 7 
[6,] 2 4 3 
[7,] 3 0 9 

[[3]] 
    [,1] [,2] [,3] 
[1,] 5 0 4 
[2,] 4 5 9 
[3,] 4 6 9 
[4,] 5 5 7 
[5,] 2 4 1 
[6,] 3 1 4 
[7,] 5 1 7 
+0

嗨吉貝特。非常感謝你的幫助,但可能我不明白你的建議。我想避免的是爲前例。在[[1]]中重複[,1]中的數字6,在[[2]中重複7和4等等。 – Elb

+0

@Elb如此設置'replace = FALSE'。它不會像你期望的那樣工作,然後給我們一些數據來處理並向我們展示預期的輸出,以便我們可以完全理解你的問題。 –

+0

mmmmm ...我不能....我的老闆告訴我根據我們的數據進行替換樣品.. – Elb

2

它應與replace = FALSE工作:

randomMatrix<-replicate(1000, sample(gene_list, 1652, replace = FALSE)) 

這當然需要gene_list至少1652個唯一值。

+0

通過強制我的老闆,我必須更換。但我需要的是取代每個列表中沒有基因必須複製的條件。當然,列表之間的基因被複制,因爲替換= TRUE – Elb

+0

@Elb樣本命令被複制1000次。在每次運行中,如果'replace = FALSE',您將獲得唯一的值。但這對其他運行沒有影響。因此,在列表之間你實際上取代了「基因」。 –