Атрибут класса потери матрицы в R

Рассмотрим следующий код:

> 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"

И обычно применение общих функций к объектам сохраняет атрибут класса. Не для матричных / числовых / целочисленных объектов. Почему? И можно ли избежать такого поведения?

5
задан csgillespie 15 November 2011 в 14:47
поделиться