14

データフレームがあり、サマリーがその情報をどのように生成するかを知りたいです。具体的には、サマリーは、因子の各レベルの要素数のカウントをどのように生成しますか。要約を使用することはできますが、因子をより適切に処理する方法を学びたいと思います。?summaryを試してみると、一般的な情報が表示されます。バイトコードであるため、これは不可能ですか?

4

1 に答える 1

38

入力時に表示されるのsummary

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

これは、summary が汎用関数であり、多くのメソッドが関連付けられていることを示しています。これらのメソッドが実際に呼び出されるものを確認するには、試すことができます

> 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 オブジェクトで summary を呼び出すときと、data.frame で summary を呼び出すときのコードが異なるということです。これら 2 つのオブジェクトに対して同じ方法で要約が行われるとは思わないので、これは良いことです。

data.frame で summary を呼び出したときに実行されるコードを確認するには、次のように入力します。

summary.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 のコードをより簡単に探索するのに役立つことを願っています。

さらに詳細については、The R Journal の Volume 6/4 ( warning, pdf )を参照し、R 関数のソース コードの表示を扱う Uwe Ligge の「R Help Desk」セクションを参照してください。

于 2012-06-23T23:11:52.817 に答える