簡體   English   中英

幾個向量之間共享元素的交叉表

[英]Cross-tabulation of shared elements between several vectors

我正在嘗試但未能在 R 中一次獲得多個向量之間相交中的元素數量:我有幾個不同長度的字符向量(唯一元素),並且想要獲得每對向量之間共享的元素數量。

本質上,這意味着類似於length(intersect(a,b)) ,但重復多次/作為所有向量組合的交叉表。

我覺得這是一個簡單的案例,涉及apply()家族之類的東西,但我似乎無法弄清楚... :-/

感謝您的任何建議!

您可以使用Reduce 這是一個最小的可重現示例

a1 <- 1:5
a2 <- 3:6
a3 <- 4:9

Reduce(intersect, list(a1, a2, a3))
#[1] 4 5

關鍵是將向量存儲在list

要獲得所有向量組合的交集,您可以執行以下操作:

l <- list(a1 = 1:5, a2 = 3:6, a3 = 4:9)

intsct_list <- combn(seq_along(l), 2, function(x) intersect(l[[x[1]]], l[[x[2]]]), simplify = FALSE)

names(intsct_list) <- combn(names(l), 2, paste0, collapse = "")

lengths(intsct_list)  

a1a2 a1a3 a2a3 
   3    2    3 

暫無
暫無

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

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