调用对象时,如
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
编辑:根据评论和一些测试,我在考虑调用x
和print(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}}相同吗?
答案 0 :(得分:2)
lm
和print
都不是S4系统的一部分,因此" SetMethod"是错误的语法。相反,如果您使用S3语法:
print.lm <- function(x) print(x$coef)
按照您的说法(例如fit <- lm(cars$dist ~ cars$speed)
在调用print(fit)
和fit
时)产生相同的结果。