> On Dec 17, 2016, at 3:15 PM, Jeff Newmiller <jdnew...@dcn.davis.ca.us> wrote:
> 
> No, cannot agree. The result of using an n by 2 matrix to index into a 
> rectangular object is a vector. A vector can only have one storage mode for 
> all elements. Some type coercion is necessary to accommodate this.

I have no argument with the premise that an atomic vector must be of a single 
mode.  But the exact same values were established with a numeric vector into 
those positions indexed by the 2-column matrix. Why does extraction need to 
coerce the entire dataframe to matrix when none of the extracted values are 
character? I suppose my request is that the very simple line in `[.data.frame`


    if (is.matrix(i)) 
            return(as.matrix(x)[i])

If it were replaced by code that would only extract from the values needed and 
then use a shifted version of the selection matrix, you could get values that 
were not coerced by being innocent bystanders of a dataframe colum that was not 
relevant.

as.matrix( x[ min( i[ , 1]):max( i[ , 1]), min( i[ ,2 ]):max(i[ , 2]) ])[
                   cbind( i[,1]-min( i[ , 1]) +1, i[,2]- min( i[ ,2 ]) +1) ]

-- 
David.

> -- 
> Sent from my phone. Please excuse my brevity.
> 
> On December 17, 2016 2:58:24 PM PST, David Winsemius <dwinsem...@comcast.net> 
> wrote:
>> 
>>> On Dec 17, 2016, at 11:34 AM, Bert Gunter <bgunter.4...@gmail.com>
>> wrote:
>>> 
>>> It's documented, David:
>>> 
>>> From ?"[.data.frame"
>>> 
>>> "Matrix indexing (x[i] with a logical or a 2-column integer matrix i)
>>> using [ is not recommended. For extraction, x is first coerced to a
>>> matrix..."
>>> 
>>> ergo characters for a mixed mode frame.
>> 
>> Can we agree that it is most ironic that `[<-.data.frame` does not
>> impose coercion on its `x` argument with a 2 column matrix as `i`, but
>> that `[.data.frame` does? I had initially assumed that the coercion had
>> occurred at the time of assignment which would have made more sense (to
>> me, anyway).
> 

David Winsemius
Alameda, CA, USA

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to