我有一个1000万行+(i,j,x)格式的矩阵。对于某些行,存在(i,j,x)和(j,i,x)。对于其他人,仅存在(j,i,x)(j> i)。我正在寻找一种有效的方法,使其成为上三角形格式(i,j,x)(i 我尝试使用unique / aggregate(在一些转换之后)执行此操作,并且它们对于我的实例大小都非常慢。set.seed(100)
N <- 10000
M <- 1000
mat <- cbind(sample(1:M,N,replace=TRUE),sample(1:M,N,replace=TRUE),runif(N))
mat.out <- mat[mat[,1]<mat[,2],]
idx.flip <- which(runif(nrow(mat.out))<.3)
idx.del <- idx.flip[seq(1,length(idx.flip)%/%2)]
mat.in <- rbind(mat.out[-idx.del,], cbind(mat.out[,2],mat.out[,1],mat.out[,3])[idx.flip,])