在R中,“print”和“show”功能有什么区别?

时间:2017-12-01 12:41:51

标签: r printing show

当我读一本名为“使用R的科学编程和模拟简介”的书时,我对“print”和“show”的使用感到困惑。它说如果你在你的代码中使用函数“show”,那么当你调用“source”来再次执行代码时,函数“show”将不起作用。相反,如果您在代码中使用“print”,那么当您“获取”它时它可以正常工作。

我试图找到原因,但只是发现大多数人更关注“猫”和“秀”之间的区别,所以有人能告诉我“show”和“print”之间的区别和在实践中,我何时应该使用show而何时应该使用另一个?

1 个答案:

答案 0 :(得分:0)

在R中,有两个面向对象的编程框架:简单但不形式化的S3框架,以及复杂但形式化的S4框架。在这两个框架中,如果调用诸如print之类的 generic 函数,则实际工作将由另一个函数完成,该函数专门针对要打印的对象类型而设计。例如,如果您调用print(df),并且df是一个data.frame,则实际的打印将由功能print.data.frame完成。这称为方法分派。如果找不到特定方法,则使用print.default

基本上,您可以将show理解为S4类的print的概括。 show查看一个对象,如果它是S4类对象,它将调用由对象签名定义的相应S4方法。如果它是S3对象,则将分派到相关的print方法。

确实,show通常不返回值,但是showprint是否返回值取决于所调用的特定函数。 base::print...方法都无形地返回对象,而show方法无形地返回NULL,但这是一个约定,而不是要求。