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

Gabor Grothendieck ggrothendieck at myway.com
Thu Oct 7 17:01:45 CEST 2004


Bryan L. Brown <stonefly <at> mail.utexas.edu> writes:

: 
: 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)'
: 
: 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.  
: 
: If anyone has advice, I'd be grateful,


In addition to the answers you already got there are:

X[-1]  # all but first element of a vector
mat[,-1] # all but first column
mat[-1,] # all but first row
tail(X, 8)  # last 8 elements of vector or last 8 rows of data frame


Also be sure to check out Robin Hankin's "R and Octave" referenced at:

http://cran.r-project.org/other-docs.html




More information about the R-help mailing list