データフレームがあり、サマリーがその情報をどのように生成するかを知りたいです。具体的には、サマリーは、因子の各レベルの要素数のカウントをどのように生成しますか。要約を使用することはできますが、因子をより適切に処理する方法を学びたいと思います。?summaryを試してみると、一般的な情報が表示されます。バイトコードであるため、これは不可能ですか?
1 に答える
入力時に表示されるの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」セクションを参照してください。