[R] Return "TRUE" only for first match of values between matrix and vector.
arun
smartpink111 at yahoo.com
Fri May 2 13:51:16 CEST 2014
Hi,
Try:
indx <- A==B
t(apply(indx,1,function(x) {x[duplicated(x) & !is.na(x)] <- FALSE; x}))
# [,1] [,2] [,3]
#[1,] TRUE FALSE FALSE
#[2,] FALSE NA FALSE
#[3,] NA NA NA
#[4,] TRUE NA FALSE
#[5,] FALSE TRUE FALSE
A.K.
On Friday, May 2, 2014 4:47 AM, nevil amos <nevil.amos at gmail.com> wrote:
I wish to return " True" in a matrix for only the first match of a value
per row where the value equals that in a vector with the same number of
values as rosw in the matrix
eg:
A<-matrix(c(2,3,2,1,1,2,NA,NA,NA,5,1,0,5,5,5),5,3)
B<-c(2,1,NA,1,5)
desired result:
[,1] [,2] [,3]
[1,] TRUE FALSE FALSE
[2,] FALSE NA FALSE
[3,] NA NA NA
[4,] TRUE NA FALSE
[5,] FALSE TRUE FALSE
however A==B returns:
[,1] [,2] [,3]
[1,] TRUE TRUE FALSE
[2,] FALSE NA FALSE
[3,] NA NA NA
[4,] TRUE NA FALSE
[5,] FALSE TRUE TRUE
and
apply(A,1,function(x) match (B,x))
returns
[,1] [,2] [,3] [,4] [,5]
[1,] 1 NA 1 NA NA
[2,] 3 NA NA 1 1
[3,] NA 2 2 2 NA
[4,] 3 NA NA 1 1
[5,] NA NA 3 3 2
thanks
[[alternative HTML version deleted]]
______________________________________________
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