对于某些包,我可以看到特殊类型的对象。例如,当我试图从包中打印数据集时,我收到以下消息。
多特征
This is an object of class "cross".
It is too complex to print, so we provide just this summary.
RI strains via selfing
No. individuals: 162
......................and other summary information
是(多特征)
[1] "riself"
我想知道我们怎么能创造出这样的物体。它们是数据帧的特殊列表、向量矩阵吗。
X <- c("A", "B", "C")
Y <- data.frame (A = 1:10, B = 21:30, C = 31:40)
myeq <- c("Y ~ X1 + Y1")
K <- 100
A = 1:20
B = B= 21:40
J <- as.matrix(A,B )
myl1 <- list(J, K)
现在我的复杂对象:
mycomplexobject <- list(X, Y, myeq, K, J, myl1)
mycomplexobject
str(mycomplexobject)
List of 6
$ : chr [1:3] "A" "B" "C"
$ :'data.frame': 10 obs. of 3 variables:
..$ A: int [1:10] 1 2 3 4 5 6 7 8 9 10
..$ B: int [1:10] 21 22 23 24 25 26 27 28 29 30
..$ C: int [1:10] 31 32 33 34 35 36 37 38 39 40
$ : chr "Y ~ X1 + Y1"
$ : num 100
$ : int [1:20, 1] 1 2 3 4 5 6 7 8 9 10 ...
$ :List of 2
..$ : int [1:20, 1] 1 2 3 4 5 6 7 8 9 10 ...
..$ : num 100
是(mycomplexobject)
[1] "list" "vector"
有没有办法制作特殊的对象,防止打印整个列表,而不是像"打印起来很复杂"这样的消息,并提供摘要?
只需设置对象的class
并提供一个print
方法。
class(mycomplexobject) <- c("too_complex", class(mycomplexobject))
print.too_complex <- function(x) {
cat("Complex object of length", length(x), "n")
}
mycomplexobject