在R中调用对象时打印的是什么?

时间:2018-03-08 15:14:41

标签: r

调用对象时,如

x = 6
x

是否有一个方法被调用来决定在控制台中打印什么?以lm个对象为例,当您调用lm时,只需要一些特殊格式的列表中的某些元素(对象结构是一个列表)。

lm(cars$dist~cars$speed)

#Call:
#lm(formula = cars$dist ~ cars$speed)
#
#Coefficients:
#(Intercept)   cars$speed  
#    -17.579        3.932  

如何在调用对象时修改某个类的对象的打印方式,例如,如果我想要一个像

这样的结果
lm(cars$dist~cars$speed)
#cars$dist = -17.579 + 3.932*cars$speed

编辑:根据评论和一些测试,我在考虑调用xprint(x)具有相同的输出。但我尝试修改print类的lm方法。

setMethod("print", signature = "lm", function(x) print(x$coef))

导致不同的打印格式,按预期工作

print(lm(cars$dist~cars$speed))
#(Intercept)  cars$speed 
# -17.579095    3.932409 

但另一方面,当我打电话时

lm(cars$dist~cars$speed)
#
#Call:
#lm(formula = cars$dist ~ cars$speed)
#
#Coefficients:
#(Intercept)   cars$speed  
#    -17.579        3.932  

print(object) object的结果不应该与{{1}}相同吗?

1 个答案:

答案 0 :(得分:2)

lmprint都不是S4系统的一部分,因此" SetMethod"是错误的语法。相反,如果您使用S3语法:

print.lm <- function(x) print(x$coef)

按照您的说法(例如fit <- lm(cars$dist ~ cars$speed)在调用print(fit)fit时)产生相同的结果。