[R] Sorting vector based on pairs of comparisons
Bert Gunter
bgunter@4567 @end|ng |rom gm@||@com
Fri Mar 15 08:53:14 CET 2019
If I understand correctly, the answer is a topological sort.
Here is an explanation
https://davidurbina.blog/on-partial-order-total-order-and-the-topological-sort/
This was found by a simple web search on
"Convert partial ordering to total ordering"
Btw. Please use search engines before posting here.
Bert
On Thu, Mar 14, 2019, 10:50 PM Jim Lemon <drjimlemon using gmail.com> wrote:
> Hi Pedro,
> This looks too simple to me, but it seems to work:
>
> swap<-function(x,i1,i2) {
> tmp<-x[i1]
> x[i1]<-x[i2]
> x[i2]<-tmp
> return(x)
> }
> mpo<-function(x) {
> L<-unique(as.vector(x))
> for(i in 1:nrow(x)) {
> i1<-which(L==x[i,1])
> i2<-which(L==x[i,2])
> if(i2<i1) L<-swap(L,i1,i2)
> }
> return(L)
> }
> mpo(matComp)
>
> Jim
>
> On Thu, Mar 14, 2019 at 10:30 PM Pedro Conte de Barros <pbarros using ualg.pt>
> wrote:
> >
> > Dear All,
> >
> > This should be a quite established algorithm, but I have been searching
> > for a couple days already without finding any satisfactory solution.
> >
> > I have a matrix defining pairs of Smaller-Larger arbitrary character
> > values, like below
> >
> > Smaller <- c("ASD", "DFE", "ASD", "SDR", "EDF", "ASD")
> >
> > Larger <- c("SDR", "EDF", "KLM", "KLM", "SDR", "EDF"
> >
> > matComp <- cbind(Smaller, Larger)
> >
> > so that matComp looks like this
> >
> > Smaller Larger
> > [1,] "ASD" "SDR"
> > [2,] "DFE" "EDF"
> > [3,] "ASD" "KLM"
> > [4,] "SDR" "KLM"
> > [5,] "EDF" "SDR"
> > [6,] "ASD" "EDF"
> >
> > This matrix establishes six pairs of "larger than" relationships that
> > can be used to sort the unique values in the matrix,
> >
> > > unique(as.vector(matComp))
> > [1] "ASD" "DFE" "SDR" "EDF" "KLM"
> >
> > Specifically, I would like to get this:
> >
> > sorted <- c("ASD", "DFE", "EDF", "SDR", "KLM")
> >
> > or, equally valid (my matrix does not have the full information):
> >
> > sorted <- c("DFE", "ASD", "EDF", "SDR", "KLM")
> >
> > Preferably, I would get the different combinations of the unique values
> > that satisfy the "larger than" conditions in the matrix...
> >
> >
> > I am sure this is a trivial problem, but I could not find any algorithm
> > to solve it.
> >
> > Any help would be highly appreciated
> >
> > ______________________________________________
> > R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
[[alternative HTML version deleted]]
More information about the R-help
mailing list