当我读一本名为“使用R的科学编程和模拟简介”的书时,我对“print”和“show”的使用感到困惑。它说如果你在你的代码中使用函数“show”,那么当你调用“source”来再次执行代码时,函数“show”将不起作用。相反,如果您在代码中使用“print”,那么当您“获取”它时它可以正常工作。
我试图找到原因,但只是发现大多数人更关注“猫”和“秀”之间的区别,所以有人能告诉我“show”和“print”之间的区别和在实践中,我何时应该使用show而何时应该使用另一个?
答案 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
通常不返回值,但是show
或print
是否返回值取决于所调用的特定函数。 base::print...
方法都无形地返回对象,而show
方法无形地返回NULL,但这是一个约定,而不是要求。