這是一種方式。對於100行矩陣的每一行,可以找到所有數字的對/三元組(使用combn
),並執行對/三元組的頻率計數(使用table
)。我定義的pasteSort
函數在對它進行排序後從矢量創建一個字符串。我們將這個函數應用到每一行中的每個pair/tuple,並且在進行頻率計數之前收集矩陣中的所有對/元組。請注意,如果一個對在相同的行上重複,則它被視爲「重複」。
> mtx <- matrix(c(1,5,10,15,3,
2, 15, 3, 8, 27,
1, 22, 34, 45, 35,
28, 27, 32, 3, 8), ncol=5, byrow=TRUE)
> pasteSort <- function(x) do.call(paste, as.list(sort(x)))
> pairs <- c(apply(mtx, 1, function(row) apply(combn(row, 2), 2, pasteSort)))
> pairFreqs <- table(pairs)
> pairFreqs[ pairFreqs > 1 ]
3 15 3 27 3 8 8 27
2 2 2 2
> triples <- c(apply(mtx, 1, function(row) apply(combn(row, 3), 2, pasteSort)))
> tripleFreqs <- table(triples)
> tripleFreqs[ tripleFreqs > 1 ]
3 8 27
2
`combn`!這就是我想念的!今晚我會試試這個,我會告訴你它是否有效! (PS:數字不能在同一行重複,所以這不是問題)。 – nico 2011-01-06 18:14:17