在R中,当有三列时,如何跨行找到唯一的数字对?

在R中,当有三列时,如何跨行找到唯一的数字对?,r,mesh,R,Mesh,我正在使用R中的三角形网格。对于那些不熟悉的人,PLY格式有两个主要组件,一个顶点x、y、z坐标的3×n矩阵,其中n是顶点数,一个面的3×m矩阵,其中每个数引用顶点矩阵中的一条线,从而定义三角形面的三个角。我试图找到网格边界边,这些边是在faces矩阵中只引用一次的三角形的“边” 因此,我的问题是,如何在有三列的行中找到唯一的数字对 face 1 4 6 7 face 2 7 6 8 face 3 9 11 12 face 4 10 9 12 在这里,线(面)1的边4-7只出现一次,而6-7

我正在使用R中的三角形网格。对于那些不熟悉的人,PLY格式有两个主要组件,一个顶点x、y、z坐标的3×n矩阵,其中n是顶点数,一个面的3×m矩阵,其中每个数引用顶点矩阵中的一条线,从而定义三角形面的三个角。我试图找到网格边界边,这些边是在faces矩阵中只引用一次的三角形的“边”

因此,我的问题是,如何在有三列的行中找到唯一的数字对

face 1 4 6 7
face 2 7 6 8
face 3 9 11 12 
face 4 10 9 12
在这里,线(面)1的边4-7只出现一次,而6-7出现两次,9-12也是如此。
unique()跨行工作,但查找唯一的行,并希望数字的顺序相同。有什么建议吗?

您要做的是对每一对进行散列,然后制作一个散列表。您还需要(x,y) 与(y,x)相同的散列

R>数据
V1 V2 V3 V4 V5
1面1 4 6 7
2面27668
3面391112
4面4109 12
R> e1表(c(e1,e2,e3,递归=TRUE))
4.06  4.07  6.07  6.08  7.08   9.1  9.11  9.12 10.12 11.12
1     1     2     1     1     1     1     2     1     1

谢谢,这是一个很好的解决方案。我可能会尝试另一种方式,但我喜欢你的方式接近它!
R>data
    V1 V2 V3 V4 V5
1 face  1  4  6  7
2 face  2  7  6  8
3 face  3  9 11 12
4 face  4 10  9 12
R>e1 <- pmin(data[3],  data[4]) + pmax(data[3], data[4])/100
R>e2 <- pmin(data[3],  data[5]) + pmax(data[3], data[5])/100
R>e3 <- pmin(data[4],  data[5]) + pmax(data[4], data[5])/100
R>table(c(e1,e2,e3, recursive=TRUE))
 4.06  4.07  6.07  6.08  7.08   9.1  9.11  9.12 10.12 11.12
    1     1     2     1     1     1     1     2     1     1