[R] The end of Matlab
Duncan Murdoch
murdoch at stats.uwo.ca
Fri Dec 12 08:38:35 CET 2008
On 11/12/2008 9:45 PM, Mike Rowe wrote:
> Greetings!
>
> I come to R by way of Matlab. One feature in Matlab I miss is its
> "end" keyword. When you put "end" inside an indexing expression, it
> is interpreted as the length of the variable along the dimension being
> indexed. For example, if the same feature were implemented in R:
>
> my.vector[5:end]
>
> would be equivalent to:
>
> my.vector[5:length(my.vector)]
And if my.vector is of length less than 5?
>
> or:
>
> this.matrix[3:end,end]
>
> would be equivalent to:
>
> this.matrix[3:nrow(this.matrix),ncol(this.matrix)] # or
> this.matrix[3:dim(this.matrix)[1],dim(this.matrix)[2]]
>
> As you can see, the R version requires more typing, and I am a lousy
> typist.
It doesn't save typing, but a more readable version would be
rows <- nrow(this.matrix)
cols <- ncol(this.matrix)
this.matrix[3:rows, cols]
>
> With this in mind, I wanted to try to implement something like this in
> R. It seems like that in order to be able to do this, I would have to
> be able to access the parse tree of the expression currently being
> evaluated by the interpreter from within my End function-- is this
> possible? Since the "[" and "[[" operators are primitive I can't see
> their arguments via the call stack functions...
>
> Anyone got a workaround? Would anybody else like to see this feature
> added to R?
I like the general rule that subexpressions have values that can be
evaluated independent of context, so I don't think this is a good idea.
Duncan Murdoch
More information about the R-help
mailing list