簡體   English   中英

列表中的成對比較表 R

[英]Pairwise comparison table from a list R

我有一個包含 4 個帶有術語(字符)的向量的列表。 我正在尋找一個包含術語成對比較的表格。 在每對比較中有多少是相等的?

這是一個例子:

set.seed(20190708)
genes <- paste("gene",1:1000,sep="")
x <- list(
  A = sample(genes,300), 
  B = sample(genes,525), 
  C = sample(genes,440),
  D = sample(genes,350)
)

這就是我要找的東西:

在此處輸入圖像描述

這些是兩組中出現的術語數。

如果我們想要一個對稱矩陣 output,我們可以使用outer ,並as.dist將結果呈現為下三角。

out <- outer(x, x, FUN = Vectorize(function(u, v) length(intersect(u, v))))
as.dist(out)
#>     A   B   C
#> B 151        
#> C 128 228    
#> D 133 187 150

或者如果它只是沒有鏡像重復的成對比較

out <- combn(x, 2, FUN = function(x) length(intersect(x[[1]], x[[2]])))
names(out) <- combn(names(x), 2, FUN = paste, collapse = "_")
stack(out)[2:1]
ind values
1 A_B    151
2 A_C    128
3 A_D    133
4 B_C    228
5 B_D    187
6 C_D    150

這是另一個基本 R 選項

> crossprod(table(stack(x)))
   ind
ind   A   B   C   D
  A 300 151 128 133
  B 151 525 228 187
  C 128 228 440 150
  D 133 187 150 350

或者

> as.dist(crossprod(table(stack(x))))
    A   B   C
B 151
C 128 228
D 133 187 150

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM