Hi Abby,
On 11/15/19 10:19 PM, Abby Spurdle wrote:
And indeed I think you are right on spot and this would mean
that indeed the implicit class
"matrix" should rather become c("matrix", "array").
I've made up my mind (and not been contradicted by my fellow R
corers) to try go there for R 4.0.0 next April.
I'm not enthusiastic about matrices extending arrays.
If a matrix is an array, then shouldn't all vectors in R, be arrays too?
The main distinguishing feature of matrices (and arrays) vs vectors is
that they have a dimension attribute.
x <- as.list(letters[1:8]) # just to show that it generalizes not only
to atomic vectors
is.vector(x) # TRUE
inherits(x, "matrix") # FALSE
dim(x) <- c(2, 4)
is.vector(x) # FALSE
inherits(x, "matrix") # TRUE
inherits(x, "array") # FALSE, but should be TRUE for consistency
dim(x) <- c(2, 2, 2)
is.vector(x) # FALSE
inherits(x, "matrix") # FALSE
inherits(x, "array") # TRUE
A matrix should be really nothing else just an array where
length(dim(x)) == 2L.
IMHO the only special object which has dimension attribute but is not a
special case of arrays is the data.frame.
Denes
#mockup
class (1)
[1] "numeric" "array"
Which is a bad idea.
It contradicts the central principle that R uses "Vectors" rather than "Arrays".
And I feel that matrices are and should be, a special case of vectors.
(With their inheritance from vectors taking precedence over anything else).
If the motivation is to solve the problem of 2D arrays, automatically
being mapped to matrices:
class (array (1, c (2, 2) ) )
[1] "matrix"
Then wouldn't it be better, to treat 2D arrays, as a special case, and
leave matrices as they are?
#mockup
class (array (1, c (2, 2) ) )
[1] "array2d" "matrix" "array"
Then 2D arrays would have access to both matrix and array methods...
Note, I don't want to enter into (another) discussion on the
differences between implicit class and classes defined via a class
attribute.
That's another discussion, which has little to do with my points above.
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel