[R] Test for column equality across matrices
Thiem Alrik
thiem at sipo.gess.ethz.ch
Sun Jul 14 15:32:22 CEST 2013
Dear William,
thanks a lot. I've found another nice alternative:
A <- matrix(t(expand.grid(c(1,2,3,4,5), 15, 16)), nrow = 3)
B <- combn(16, 3)
B.n <- B[, -which(duplicated(t(cbind(A, B)))) - ncol(A)]
Best wishes,
Alrik
-----Ursprüngliche Nachricht-----
Von: arun [mailto:smartpink111 at yahoo.com]
Gesendet: Samstag, 13. Juli 2013 19:57
An: William Dunlap
Cc: mailman, r-help; Thiem Alrik
Betreff: Re: [R] Test for column equality across matrices
I tried it on a slightly bigger dataset:
A1 <- matrix(t(expand.grid(1:90, 15, 16)), nrow = 3)
B1 <- combn(90, 3)
which(is.element(columnsOf(B1), columnsOf(A1)))
# [1] 1067 4895 8636 12291 15861 19347 22750 26071 29311 32471 35552 38555
#[13] 41481
which(apply(t(B1),1,paste,collapse="")%in%apply(t(A1),1,paste,collapse=""))
# [1] 1067 4895 8636 12291 15861 19347 22750 26071 29311 32471 35552 38555
#[13] 41481 44331
B1[,44331]
#[1] 14 15 16
which(apply(t(A1),1,paste,collapse="")=="141516")
#[1] 14
B1New<-B1[,!apply(t(B1),1,paste,collapse="")%in%apply(t(A1),1,paste,collapse="")]
newB <- B1[ , !is.element(columnsOf(B1), columnsOf(A1))]
identical(B1New,newB)
#[1] FALSE
is.element(B1[,44331],A1[,14])
#[1] TRUE TRUE TRUE
B1Sp<-columnsOf(B1)
B1Sp[[44331]]
#[1] 14 15 16
A1Sp<- columnsOf(A1)
A1Sp[[14]]
#[1] 14 15 16
is.element(B1Sp[[44331]],A1Sp[[14]])
#[1] TRUE TRUE TRUE
A.K.
----- Original Message -----
From: William Dunlap <wdunlap at tibco.com>
To: Thiem Alrik <thiem at sipo.gess.ethz.ch>; "mailman, r-help" <r-help at r-project.org>
Cc:
Sent: Saturday, July 13, 2013 1:30 PM
Subject: Re: [R] Test for column equality across matrices
Try
columnsOf <- function(mat) split(mat, col(mat))
newB <- B[ , !is.element(columnsOf(B), columnsOf(A))]
Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com
> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf
> Of Thiem Alrik
> Sent: Saturday, July 13, 2013 6:45 AM
> To: mailman, r-help
> Subject: [R] Test for column equality across matrices
>
> Dear list,
>
> I have two matrices
>
> A <- matrix(t(expand.grid(c(1,2,3,4,5), 15, 16)), nrow = 3)
> B <- combn(16, 3)
>
> Now I would like to exclude all columns from the 560 columns in B which are identical to
> any 1 of the 6 columns in A. How could I do this?
>
> Many thanks and best wishes,
>
> Alrik
>
> ______________________________________________
> R-help at 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.
______________________________________________
R-help at 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.
More information about the R-help
mailing list