[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