2012-04-06 2 views
2

いくつかのパッケージでは、特殊な種類のオブジェクトを見ることができます。たとえば、パッケージからデータセットを印刷しようとすると、次のメッセージが表示されます。 rで特別なデータオブジェクトを作成する

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 

multitrait

は、私たちはそのようなオブジェクトを作成する方法を疑問に思う(multitrait)

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

あります代わりに要約を提供するのは複雑ですか?

+0

あなたはCrossValidated上のR以上についてのよりよい応答を得ること - http://stats.stackexchange.com – arboc7

+0

@ arboc7は、これがない、統計のためのRを使用することについて、Rのプログラミングについての質問です。それはここに属しています。 –

答えて

6

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

class(mycomplexobject) <- c("too_complex", class(mycomplexobject)) 
print.too_complex <- function(x) { 
    cat("Complex object of length", length(x), "\n") 
} 
mycomplexobject 
+0

ああ素敵な...ありがとう...私は "attr(*、" class ")= chr [1:2]" riself "" cross ""のようなものを見ることができます?? – jon

+1

'class'は単に属性(メタデータ)です。 どのオブジェクトにもアタッチすることができます。 'print'や' plot'のようないくつかのメソッド は一般的です。つまり、最初の引数の型に依存します。 'メソッド(print)'や 'メソッド(plot)'をチェックできます。 'class'属性には、オブジェクトが属するすべてのクラスが含まれます (これは多重継承の実装方法です):あなたの例では、オブジェクトは' riself'(派生クラス)クラス と 'cross'(親クラス) 。 Rは、 'print.riself'、' print.cross'、 'print.default' 、' print.default' を探し、存在する最初のものを使います。 –

関連する問題