2012-06-23 17 views
12

私はデータフレームを持っており、その要約がどのように情報を生成するのかを知りたい。具体的には、要約はどのように因子の各レベルの要素数のカウントを生成しますか?私は要約を使用することができますが、私はより良い要因で作業する方法を学びたいと思います。私は要約をしようとすると、私は一般的な情報を取得します。バイトコードであるためこれは不可能ですか?あなたがsummaryを入力するときに我々が見る何データフレームのsummary()のコードを読むにはどうすればよいですか?

+1

コンソールで '> summary.data.frame'を試してください。 – kohske

+0

'?methods'を参照して' methods(summary) 'を試してください。これは' summary.data.frame'につながります。これは '?summary'で記述されています。 –

+0

このQ&Aはさらに決定的です:http://stackoverflow.com/questions/19226816/how-can-i-view-the-source-code-for-a-function –

答えて

32

これは要約は、一般的な関数であり、それに接続されている多くのメソッドを持っていることを告げている

> summary 
function (object, ...) 
UseMethod("summary") 
<bytecode: 0x0456f73c> 
<environment: namespace:base> 

です。これらのメソッドは、実際に私たちはここで

> methods(summary) 
[1] summary.aov    summary.aovlist   summary.aspell*   
[4] summary.connection  summary.data.frame  summary.Date   
[7] summary.default   summary.ecdf*   summary.factor   
[10] summary.glm    summary.infl   summary.lm    
[13] summary.loess*   summary.manova   summary.matrix   
[16] summary.mlm    summary.nls*   summary.packageStatus* 
[19] summary.PDF_Dictionary* summary.PDF_Stream*  summary.POSIXct   
[22] summary.POSIXlt   summary.ppr*   summary.prcomp*   
[25] summary.princomp*  summary.srcfile   summary.srcref   
[28] summary.stepfun   summary.stl*   summary.table   
[31] summary.tukeysmooth* 

    Non-visible functions are asterisked 

を試すことができますと呼ばれているかを確認するには、我々はsummary機能に関連付けられているすべてのメソッドを参照してください。つまり、lmオブジェクトのサマリをdata.frameでサマリーを呼び出すときよりも呼び出すときには、異なるコードがあります。これは、2つのオブジェクトに対して同じ要領でサマリーが実行されるとは期待していないため、良いことです。

は、メソッドのリストに示すように、あなただけの

summary.data.frame 

を入力することができますが、data.frameの概要を呼び出すときに実行されるコードを参照してください。あなたはそれを調べて研究し、印刷されたコードで何でもしてもらうことができます。要因に興味があると述べたので、おそらくsummary.factorの出力を調べたいと思うでしょう。ここで、印刷されたメソッドの中にはアスタリスク(*)が付いていて、それらが見えないことを意味することに気付くかもしれません。これは基本的に、コードを表示しようとする関数の名前を入力するだけでは意味がないことを意味します。しかし

> summary.prcomp 
Error: object 'summary.prcomp' not found 

、あなたはコードが実際にあなたがそれを見るためにgetAnywhere機能を使用することができますが何であるかを見ることが決定している場合。

> getAnywhere(summary.prcomp) 
A single object matching ‘summary.prcomp’ was found 
It was found in the following places 
    registered S3 method for summary from namespace stats 
    namespace:stats 
with value 

function (object, ...) 
{ 
    vars <- object$sdev^2 
    vars <- vars/sum(vars) 
    importance <- rbind(`Standard deviation` = object$sdev, `Proportion of Variance` = round(vars, 
     5), `Cumulative Proportion` = round(cumsum(vars), 5)) 
    colnames(importance) <- colnames(object$rotation) 
    object$importance <- importance 
    class(object) <- "summary.prcomp" 
    object 
} 
<bytecode: 0x03e15d54> 
<environment: namespace:stats> 

これは、Rのコードを将来もっと簡単に調べるのに役立ちます。

Volume 6/4 of The R Journal (warning, pdf)を表示し、R機能のソースコードの表示を扱うUwe Liggeの「Rヘルプデスク」のセクションを読むことができます。

+1

きちんと説明されています。 'methods(class = data.frame)'も挙げられます。 – Roland

関連する問題