1
我有一個數據集,其中的每個條目的測量子集隨機丟失:加快成對觀察計數R中
dat <- matrix(runif(100), nrow=10)
rownames(dat) <- letters[1:10]
colnames(dat) <- paste("time", 1:10)
dat[sample(100, 25)] <- NA
我很感興趣,在此數據集計算每一行之間的相關性(即AA ,ab,ac,ad,...)。但是,我想通過在結果相關矩陣中將其值設置爲NA來排除少於5個非成對非NA觀測值的相關性。
目前,我這樣做如下:
cor <- cor(t(dat), use = 'pairwise.complete.obs')
names <- rownames(dat)
filter <- sapply(names, function(x1) sapply(names, function(x2)
sum(!is.na(dat[x1,]) & !is.na(dat[x2,])) < 5))
cor[filter] <- NA
然而,這種操作的實際數據集包含> 1000項非常緩慢。
是否有方法可以基於矢量化方式中的非NA成對觀察數來過濾單元格,而不是在嵌套循環中?