Hmm.  It's something that is worth discouraging, because the user 
probably didn't mean it.

But it is more or less consistent with the language, and prohibiting it 
at this date is unlikely to be worth the possible breakage (I know, who 
could possibly rely on it?  But with a few thousand packages, somebody 
likely does.)

John

William Dunlap wrote:
> Should negative subscripts be outlawed in
>    x[[subscript]]
> ?  
>
> Currently, if subscript is a scalar then it can only
> be negative if length(x)==1 
Actually, length(x)==2 as in your example.
> (otherwise [[ throws an
> error).  If length(subscript)>1 then it gets treated
> as an attempt to recursively extract an element of
> a nested list.
>   

Yes, but the interpretation is essentially consistent with multiple 
elements and positive values:

 > xx = list(c(1,2),c(3,4))
 > xx[[-1]]
[1] 3 4
 > xx[[-2]]
[1] 1 2
 > xx[[c(-1,-2)]]
[1] 3
 > xx[[c(2,1)]]
[1] 3

>   
>> list(10,20)[[-1]] # get the last element out of 2
>>     
> [1] 20
>   
>> list(10,20,30)[[-(1:2)]] # get the last of 3?  No.
>>     
> Error in list(10, 20, 30)[[-(1:2)]] :
>   attempt to select more than one element
>   
>> list(10,list(20,30))[[-c(1:2)]] # see how recursive subscripting is
>>     
> done
> [1] 20
>
> If negative subscripts were not allowed in [[ then 
> there might be a little less confusion about [[.
>
> (If recursive subscripting were done by a list instead
> of by an integer or character vector there might be
> less confusion and it would be more flexible.)
>
>
> Bill Dunlap
> Spotfire, TIBCO Software
> wdunlap tibco.com 
>
> ______________________________________________
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>   

        [[alternative HTML version deleted]]

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to