在R中,“print”和“show”函数有什么区别?

3
当我阅读一本名为《使用R进行科学编程和模拟的介绍》的书时,我对“print”和“show”的用法感到困惑。它说,如果您在代码中使用函数“show”,则当您调用“source”再次执行代码时,“show”函数将不起作用。相反,如果您在代码中使用“print”,那么在“source”它时它能正常工作。
我试图找出原因,但只发现大多数人关注“cat”和“show”之间的区别,所以有人能告诉我“show”和“print”之间的区别,在实践中,何时应该使用“show”,何时应该使用其他方法?

我知道的一个区别是:a<-print(mtcars)b <-show(mtcars)。你可以看到bNULL,而a被赋值为mtcars - Andre Elrico
我认为这不值得花太多时间在上面。 - Andre Elrico
是的,也许 "print" 可以返回一个对象,而 "show" 不能。这很有帮助,谢谢! - Chao Chao
1个回答

3
在R中,有两个面向对象编程框架:简单但非正式的S3框架和复杂但正式的S4框架。在这两种框架中,如果您调用一个通用函数(例如print),实际的工作是由另一个函数完成的,该函数专门为您要打印的对象类型而设计。例如,如果您调用print(df),并且df是一个数据框,则实际的打印将由函数print.data.frame完成。这称为方法分派。如果没有找到特定方法,则使用print.default
基本上,您可以将show视为S4类的print泛化。 show查看一个对象,如果它是S4类对象,则调用由对象签名定义的相应S4方法。如果它是S3对象,则分派给相关的print方法。
虽然show通常不返回值,但showprint是否返回值取决于被调用的特定函数。 base::print...方法都会以隐形方式返回对象,并且show方法会以隐形方式返回NULL,但这是一种约定而不是要求。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接