我有一个数据框,我想了解摘要如何生成它的信息。具体而言,汇总如何生成因子的每个级别中的元素数量的计数。我可以使用摘要,但我想学习如何更好地处理因素。当我尝试?摘要时,我只是得到一般信息。这是不可能的,因为它是字节码?
答案 0 :(得分:32)
我们在您输入summary
时看到的是
> 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对象上调用summary时,与在data.frame上调用summary时存在不同的代码。这很好,因为我们不希望对这两个对象以相同的方式进行摘要。
要查看在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中的代码。
有关更多详细信息,您可以查看Volume 6/4 of The R Journal (warning, pdf)并阅读Uwe Ligge的“R帮助台”部分,该部分介绍查看R功能的源代码。