At Thursday 08:10 AM 10/7/2004, 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)'

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.

For this specific case, you can use which(). Also note that sometimes it can be useful to use match() with the arguments swapped, which can return you the positions of all matching values. Also, the operator %in% can be useful:


> X <- c(3, 2, 1, 1, 2, 3)
> which(X==1)
[1] 3 4
> match(1, X)
[1] 3
> match(X, 1)
[1] NA NA  1  1 NA NA
> which(!is.na(match(X, 1)))
[1] 3 4
> which(X %in% 1)
[1] 3 4
>


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.

Yep, that is a handy feature, and I often wish for something like it, but in my 10 years of using R/S-PLUS I've not come across anything better than using length(X) (or nrow(X)/ncol(X)) for the general case. (But I do sometimes still discover useful things that I didn't know about.)


For your specific case of
> Y = X(2:end)
in R/S-PLUS you can do:
> Y = X[-1]

If anyone has advice, I'd be grateful,

Bryan L. Brown
Integrative Biology
University of Texas at Austin
Austin, TX 78712
512-965-0678
[EMAIL PROTECTED]
        [[alternative HTML version deleted]]

______________________________________________
[EMAIL PROTECTED] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

______________________________________________ [EMAIL PROTECTED] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to