From tplate at blackmesacapital.com  Thu Jan 18 19:03:45 2007
From: tplate at blackmesacapital.com (Tony Plate)
Date: Thu, 18 Jan 2007 11:03:45 -0700
Subject: [Rd] subsetting matrix by subscript=0,x silently skips.
In-Reply-To: <45AFA306.7010307@cimr.cam.ac.uk>
References: <45AF612B.2080604@cimr.cam.ac.uk>
	<45AF95D1.3010401@blackmesacapital.com>
	<45AFA306.7010307@cimr.cam.ac.uk>
Message-ID: <45AFB681.7040106@blackmesacapital.com>

Hin-Tak Leung wrote:
> (I have taken off r-bug@, as multiple e-mails hitting r-bug@ probably 
> will result in multiple bug reports, knowing most mail server will
> retry)
> 
> Tony Plate wrote:
> 
>> The help page for "[" says:
>>
>> A third form of indexing is via a numeric matrix with the one column 
>> for each dimension: each row of the index matrix then selects a single 
>> element of the array, and the result is a vector. Negative indices are 
>> not allowed in the index matrix. NA and zero values are allowed: rows 
>> of an index matrix containing a zero are ignored, whereas rows 
>> containing an NA produce an NA in the result.
>>
>> So, I think it is behaving as documented.
> 
> 
> Hmm, fair enough. I guess the NA one make sense (In R as a rule,
> NA in, NA out), but I am not sure I understand or agree with
> the rationale of silently ignoring (0,x) and (x,0)'s. Any reason for that?

AFAIK, the reason is to make the behavior analogous to how regular 
indices are treated, e.g.:

 > x <- array(1:6, dim=2:3)
 > x[c(0,1),2]
[1] 3
 > x[cbind(c(0,1),2)]
[1] 3
 >

(i.e., 0's in indices are omitted)

-- Tony Plate

> 
> HTL
> 
>> Hin-Tak Leung wrote:
>>
>>> (e-mailing to R-bugs is intentional - the web itnerface seems to
>>> be down)
>>>
>>>  > a<- cbind(c(1,2), c(3,4))
>>>  > a
>>>       [,1] [,2]
>>> [1,]    1    3
>>> [2,]    2    4
>>>
>>>  > a[cbind(c(2,2), c(2,1))]
>>> [1] 4 2
>>>  > a[cbind(c(2,3), c(2,1))]
>>> Error: subscript out of bounds
>>>  > a[cbind(c(2,-1), c(2,1))]
>>> Error: negative values are not allowed in a matrix subscript
>>>  > a[cbind(c(2,0), c(2,1))]
>>> [1] 4
>>>
>>> Am somewhat surprised that 2,0 just silently skip over and doesn't
>>> throw an error like 2,0 and 2,-1 . Surely it should throw
>>> an error about subscript should be >= 1?
>>>
>>>
>>>
>>>  > sessionInfo()
>>> R version 2.4.1 (2006-12-18)
>>> i686-redhat-linux-gnu
>>>
>>> locale:
>>> LC_CTYPE=en_GB.UTF-8;LC_NUMERIC=C;LC_TIME=en_GB.UTF-8;LC_COLLATE=en_GB.UTF-8;LC_MONETARY=en_GB.UTF-8;LC_MESSAGES=en_GB.UTF-8;LC_PAPER=en_GB.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_GB.UTF-8;LC_IDENTIFICATION=C 
>>>
>>>
>>> attached base packages:
>>> [1] "splines"   "stats"     "graphics"  "grDevices" "utils"     
>>> "datasets"
>>> [7] "methods"   "base"
>>>
>>> other attached packages:
>>> snpMatrix  survival
>>>    "1.0.4"    "2.30"
>>>  >
>>>
>>> ______________________________________________
>>> R-devel at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>
>>
> 
>



[Rd] subsetting matrix by subscript=0,x silently skips.
Tony Plate