2

一部のパッケージでは、特殊なタイプのオブジェクトが表示されます。たとえば、パッケージからデータセットを印刷しようとすると、次のメッセージが表示されます。

マルチトレイト

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

は (私の複雑なオブジェクト)

 [1] "list"   "vector"

特別なオブジェクトを作成し、「印刷するのは複雑です」などのメッセージの代わりにリスト全体を印刷しないようにして、代わりに要約を提供する方法はありますか?

4

1 に答える 1

6

classオブジェクトの を設定し、printメソッドを提供するだけです。

class(mycomplexobject) <- c("too_complex", class(mycomplexobject))
print.too_complex <- function(x) {
  cat("Complex object of length", length(x), "\n")
}
mycomplexobject
于 2012-04-06T02:13:49.317 に答える