/ / Премахване на дублиращи се комбинации (независимо от реда) - r, комбинации

Премахване на дублирани комбинации (независимо от реда) - r, комбинации

Имам рамка с данни от цели числа, която е подмножество на всичките n избират 3 комбинации от 1 ... n. Например, за n = 5, това е нещо като:

      [,1] [,2] [,3]
[1,]    1    2    3
[2,]    1    2    4
[3,]    1    2    5
[4,]    1    3    4
[5,]    1    3    5
[6,]    1    4    5
[7,]    2    1    3
[8,]    2    1    4
[9,]    2    1    5
[10,]    2    3    4
[11,]    2    3    5
[12,]    2    4    5
[13,]    3    1    2
[14,]    3    1    4
[15,]    3    1    5
[16,]    3    2    4
[17,]    3    2    5
[18,]    3    4    5
[19,]    4    1    2
[20,]    4    1    3
[21,]    4    1    5
[22,]    4    2    3
[23,]    4    2    5
[24,]    4    3    5
[25,]    5    1    2
[26,]    5    1    3
[27,]    5    1    4
[28,]    5    2    3
[29,]    5    2    4
[30,]    5    3    4

Това, което искам да направя, е да премахна всички редове с дублирани комбинации, независимо от поръчката. [1,] 1 2 3 е същото като [1,] 2 1 3 е същото като [1,] 3 1 2.

unique, duplicated, &° С. не изглежда да вземе това под внимание. Също така, работя с доста голямо количество данни (n е ~ 750), така че трябва да бъде доста бърза операция. Има ли някакви основни функции или пакети, които могат да направят това?

Отговори:

20 за отговор № 1

Първо се сортирайте в редовете. Нещо като:

> dat = matrix(scan("data.txt"), ncol=3, byrow=T)
Read 90 items
> dat.sort = t(apply(dat, 1, sort))
> dat[!duplicated(dat.sort),]
[,1] [,2] [,3]
[1,]    1    2    3
[2,]    1    2    4
[3,]    1    2    5
[4,]    1    3    4
[5,]    1    3    5
[6,]    1    4    5
[7,]    2    3    4
[8,]    2    3    5
[9,]    2    4    5
[10,]    3    4    5