Try this:

merge(df, df, by.x="V2", by.y="V1")

Jean


On Mon, Aug 5, 2013 at 1:26 AM, PQuery <pierre.khoue...@embl.de> wrote:

> Hi Guys,
>
> I have a list elements in two columns of a data frame.  I want first to
> subselect on V1 and then to form and count all possible and unique triplets
> of  V1 with the corresponding elements in V2  but exclude triplets for
> which
> a pair (V1 V2) does not exists:
>
> Example input
> V1 V2
> A    B
> A    C
> D    E
> D    F
> D   G
> E    F
> E    G
> F   G
>
> Example output
> DEF
> DEG
> DFG
> EFG
> (ABC is eliminated because the pair B C does not exist in the data frame)
>
> Total: 4 triplets
>
> Here is what I tried, but was unsuccessful:
>
> uniq.V1 <- unique(df.V1)
> original.pairs <- do.call(paste, c(df[c("V1", "V2")], sep = ":"))
> nbElements <- 3
>
> l.res<-lapply(uniq.V1, function(x){
>   set <- c(x, unlist(subset(df$1==x,  select=c(V2))))
>   if(length(set) >= nbElements){
>     tmp.combn <- combn(set, nbElements, simplify=FALSE)
>     ## I tried here to create all possible combination of pairs to test
> with
> the original pairs and return only the successful ones but it became a very
> complicated structure ....
>   }
> })
>
> Any help/suggestion is appreciated,
> Best
>
>
>
>
>
> --
> View this message in context:
> http://r.789695.n4.nabble.com/obtain-triplets-from-Data-Frame-columns-tp4673091.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help@r-project.org mailing list
> 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]]

______________________________________________
R-help@r-project.org mailing list
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.

Reply via email to