# [R] Equivalents of Matlab's 'find' and 'end'

Deepayan Sarkar deepayan at stat.wisc.edu
Thu Oct 7 16:38:12 CEST 2004

```On Thursday 07 October 2004 09:10, Bryan L. Brown wrote:
> Sorry if these questions have been asked recently--I'm new to this
> list.
>
> I'm primarily a Matlab user who is attempting to learn R and I'm
> searching for possible equivalents of commands that I found very
> handy in Matlab.  So that I don't seem ungrateful to those who may
> answer, I HAVE determined ways to carry out these processes in 'brute
> force' sorts of ways in R code, but they lack the elegance and
> simplicity of the Matlab commands.  Also, if you know that no such
> commands exist, that bit of knowledge would be helpful to know so
> that I don't continue fruitless searches.
>
> The first is Matlab's 'find' command.
> This is one of the most useful commands in Matab.  Basically, if X is
> the vector
>
> X=[3, 2, 1, 1, 2, 3]
>
> the command
>
> 'find(X==1)'

which(X==1)

> would return the vector [3, 4] which would indicate that the vector X
> had the value of 1 at the 3 and 4 positions.  This was an extremely
> useful command for subsetting in Matlab.  The closest thing I've
> found in R has been 'match' but match only returns the first value as
> opposed to the position of all matching values.
>
> The second Matlab command that I'd like to find an R equivalent for
> is 'end'.  'end' is just a simple little command that indicates the
> end of a row/column.  It is incredibly handy when used to subset
> matrices like
>
> Y = X(2:end)
>
> and produces Y=[2, 1, 1, 2, 3] if the X is the same as in the
> previous example.  This cutsie little command was extremely useful
> for composing programs that were flexible and could use input
> matrices of any size without modifying the code.  I realize that you
> can accomplish the same by Y <- X[2:length(X)] in R, but this method
> is ungainly, particularly when subsetting matrices rather than
> vectors.

I don't know of anything better than length(X) or nrow/ncol(X), but you
could do X[-1], which is at least as elegant for your example, and
would work for matrices as well.

Hth,

Deepayan

```