Hi Gabor,

In strictly reading the help files for both nrow() and row(), the 'x' argument 
in the former case is "a vector, array, data frame, or NULL.", whereas in the 
latter case it is "a matrix-like object, that is one with a two-dimensional 
dim.".

Thus, I would expect row() to fail on a >= 3-dimensional array, as your example 
shows.

In reading the help file for slice.index(), there is the following in the See 
Also section:

"row and col for determining row and column indexes; in fact, these are special 
cases of slice.index corresponding to MARGIN equal to 1 and 2, respectively 
when x is a matrix."

further differentiating the behavior of row() and col() as more specific 
implementations in the 2-dimensional case.

To my read then, the difference in behavior appears to be intentional and 
expected.

Regards,

Marc Schwartz


-----Original Message-----
From: R-devel <r-devel-boun...@r-project.org 
<mailto:r-devel-boun...@r-project.org>> on behalf of Gabor Grothendieck 
<ggrothendi...@gmail.com <mailto:ggrothendi...@gmail.com>>
Date: Sunday, September 8, 2024 at 7:31 AM
To: "r-devel@r-project.org <mailto:r-devel@r-project.org>" 
<r-devel@r-project.org <mailto:r-devel@r-project.org>>
Subject: [Rd] Inconsistency between row and nrow


In the following nrow provides the expected result but row gives an
error. I would have thought that they would both work or both fail.


aa <- array(dim = 5:3)


nrow(aa)
## [1] 5


row(aa)
## Error in row(aa) : a matrix-like object is required as argument to 'row'


# this does work:
slice.index(aa, 1)


-- 
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com


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

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

Reply via email to