我試圖加快QC功能來檢查樣本之間的相似性。我想知道是否有更快的方法來比較我在下面的做法?我知道有這樣一個問題的答案是非常明確的(在SO或其他方面),但我找不到它們。我知道我應該調查plyr
,但我仍然收到sapply
。如何加快交叉檢驗樣品的加樣?
下面的示例數據是我將工作但隨機化的代表性輸出,我不認爲會影響應用程序到我原來的問題。
## sample data
nSamples <- 1000
nSamplesQC <- 100
nAssays <- 96
microarrayScores <- matrix(sample(c("G:G", "T:G", "T:T", NA),nSamples * nAssays,replace = TRUE), nrow = nSamples, ncol = nAssays)
microarrayScoresQC <- matrix(sample(c("G:G", "T:G", "T:T", NA),nSamples * nAssays,replace = TRUE), nrow = nSamples, ncol = nAssays)
mycombs <- data.frame(Experiment = rep(1:nSamples,nSamplesQC),QC = sort(rep(1:nSamplesQC,nSamples)))
## testing function
system.time(
sapply(seq(length(mycombs[,1])), function(x) {compare <- microarrayScores[mycombs[x,1],]==microarrayScoresQC[mycombs[x,2],];
sum(compare[!is.na(compare)])/sum(!is.na(compare))})
)
可以提供'chipScores'和'chipScoresQC'? – flodel
編輯。它應該說'microarrayScores'和'microarrayScoresQC'。 – cylondude
還有一個問題:你確定你打算比較微陣列分析而不是列? – joran