考虑以下代码:
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"
通常,将泛型函数应用于对象会保留类属性。不适用于矩阵/数字/整数对象。为什么?这种行为可以避免吗?