我有一个数据框架,想要了解summary函数如何生成信息。特别是,summary如何计算因子的每个级别中元素数量的计数。我可以使用summary函数,但我想学习更好地处理因子。当我尝试使用?summary时,只能得到一般信息。这是因为它是字节码而无法实现吗?
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 时会有不同的代码。这是很好的,因为我们不希望这两个对象的摘要以相同的方式进行处理。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>
methods(class=data.frame)
。 - Roland
> summary.data.frame
。 - kohske?methods
并尝试methods(summary)
,这将引导您到summary.data.frame
,该函数在?summary
中有文档说明。 - Joshua Ulrich