Hi guys,

First I apologize if my question seems stupid but I'm really stuck here. I want to check whether a number is in a vector or not, what is the command in GAUSS? I know in Matlab there is `find`

function and in R there is `%in%`

, but I tried searching these keywords and couldn't find any.

## 1 Answer

0

You have a few options, depending on what exactly you are looking to do.

### Find if one or more elements in a matrix match a specific value

```
// Vector to search in
haystack = { 1, 2, 4, 5, 6 };
// Does 'haystack' contain the number 3?
has_3 = contains(haystack, 3);
// Does 'haystack' contain the number 6?
has_6 = contains(haystack, 6);
// Does 'haystack' contain either 3 or 4?
needles = { 3, 4 };
has_34 = contains(haystack, needles);
```

After the code above:

has_3 = 0 has_6 = 1 has_34 = 1

### Find the indices of elements which match a value in a vector

`indexcat`

will the location of elements in a vector from a specified range. Note that the range can be a single number.

```
// Create a vector
x = { 1, 2, 4, 5, 6, 4, 2 };
// Set 'found' equal to index location
// of 4 in 'x', or return a missing value
idx = indexcat(x, 4);
```

After the code above:

idx = 3 6

### Find the indices of elements which match one or more values in a vector

If you want to locate more than one element inside of a vector, you can use `indnv`

.

```
// Create a vector
x = { 1, 2, 4, 5, 6, 3 };
// Elements we are looking for in 'x'
what = { 3, 5 };
// Set 'found' equal to a 2x1 vector,
// containing the index of each element
// of 'what' in 'x' or a missing value
// if it was not found
found = indnv(what, x);
```

After the code above:

found = 6 4