# Check if vector in a matrix

I have a matrix

``````new<-matrix(9,4,4)
new[1,1]<-0

v1<-c(0,0)
``````

new thus looks like this:

``````0 9 9 9
9 9 9 9
9 9 9 9
9 9 9 9
``````

I now want to check if this matrix contains the vector v1. So I did

``````v1 %in% new
``````

and obtain TRUE TRUE although I would like to check the whole vector of two zeros in a row/ column and thus would like to get a FALSE.

## 评论

### You can use rollapply from z

You can use `rollapply` from `zoo` to test if matrix contains a vector:

``````library(zoo)
any(apply(new, 2, rollapply, length(v1), identical, v1))
# FALSE

new[2,1] <- 0
any(apply(new, 2, rollapply, length(v1), identical, v1))
# TRUE
``````

### You can use a combination of

You can use a combination of `isTRUE` and `all.equal`, while `intersect` the vector with the matrix i.e.

``````isTRUE(all.equal(v1, intersect(v1, new)))
# FALSE

v2 <- c(0, 9)
all.equal(v2, intersect(v2, new))
# TRUE
``````

### Is this what you want? The v

Is this what you want?

The vector has two values, so if you want to check whether it is contained in the matrix you will have to paste the two values together to obtain `0,0`:

``````paste0(v1, collapse = ",") %in% new
 FALSE
``````

or this, which compares the string `0,0` from the pasted-together vector to the pasted-together rows of the matrix:

``````paste0(v1, collapse = ",") %in% apply(new, 2, paste0, collapse = ",")
 FALSE
``````

or this, which searches for `0,0` in the corresponding pairs of two digts separated by comma in the pasted-together rows of the matrix:

``````library(stringr)
paste0(v1, collapse = ",") %in% unlist(str_split(apply(new, 2, paste0, collapse = ","), "(?<=\\d,\\d),(?=\\d,\\d)"))
``````

This latter solution seems the most likely as it searches for `0,0` `%in%` this vector, which is the output of `unlist(str_split(apply(new, 2, paste0, collapse = ","), "(?<=\\d,\\d),(?=\\d,\\d)"))`:

`````` "0,9" "9,9" "9,9" "9,9" "9,9" "9,9" "9,9" "9,9"
``````