我試圖做很多隨機抽樣試驗,並且在這些採樣中,我可能不會每次都得到一切。包括R中隨機採樣後的缺失值(合併向量幷包含缺失值爲0)
現在,我要做的就是
test <- sample(rownames(data), size=10000, replace=T, prob=data$refFraction)
並不是每一個rowname(data)
在此表示,但我需要它的下一個步驟。
我想這樣每次我都有我的sample
我有相同的長度(和順序)向量,以便我可以將每個採樣組合成一個矩陣(我也不確定如何做最好的 - 我怎麼能使成千上萬的測試向量,並與的應用功能之一立刻將它們合併)
編輯:根據答案,我想出了這個:
trials <- function(fractions, kmers, times, ref_size) {
replicate(times, sample(kmers, size=ref_size, replace=T, prob=fractions), simplify=F)
}
result <- trials(data$refFraction, rownames(data), 100, 1000)
mat <- matrix(result, nrow=100)
但我還是隻想的計數在該行中看到每件事物的次數,同時也具有零計數,所以我最終得到一個偶數矩陣。
期望的結果是這樣的:
"A" "B" "C"
Trial1 2 5 6
Trial2 3 7 12
Trial3 0 5 14
dput(頭(數據)):
structure(list(refCount = c(3142L, 4102L, 1975L, 2009L, 2363L,
2437L), refFraction = c(0.00300290255094, 0.00392040301208, 0.00188756605287,
0.00192006086086, 0.00225838915591, 0.00232911314979), readCount = c(147L,
719L, 356L, 418L, 745L, 766L), readFraction = c(0.00029577107721,
0.00144666261574, 0.000716289139367, 0.000841036124312, 0.00149897586749,
0.00154122887852), foldChange = c(2.31774884958, 0.996935198459,
0.968959564031, 0.825477549838, 0.409869676355, 0.412907501432
), p_value = c(5.05923221341436e-321, 4.46023836252119e-170,
2.29230878162415e-77, 1.73499617494115e-59, 2.80547347576314e-15,
4.32620038741552e-16)), .Names = c("refCount", "refFraction",
"readCount", "readFraction", "foldChange", "p_value"), row.names = c("AAAAA",
"AAAAT", "AAAAG", "AAAAC", "AAATA", "AAATT"), class = "data.frame")
我有點困惑。你需要使用替換嗎?您是否想要創建多個測試樣本,但僅限於包含rownames(數據)每個成員的示例? – kungfujam 2014-09-19 21:15:51
不清楚你在做什麼,但你可以使用'replicate'來重複抽樣。結果是矩陣。例如'replicate(2,sample(5))' – 2014-09-19 21:17:38
@RichardScriven完成了,謝謝 – 2014-09-19 22:09:46