Рассмотрим следующий код:
> A <- matrix(1:12, ncol=4)
> colnames(A) <- letters[1:4]
> class(A) <- c("foo", "matrix")
когда A является подмножеством, он теряет метку класса «foo»:
> class(A[1:2,])
[1] "matrix"
То же самое происходит с векторами. Однако этого не происходит с data.frames:
> B <- as.data.frame(A)
class(B) <- c("foo", "data.frame")
> class(B[1:2,])
[1] "foo" "data.frame"
И обычно применение общих функций к объектам сохраняет атрибут класса. Не для матричных / числовых / целочисленных объектов. Почему? И можно ли избежать такого поведения?