使用 R 的打印环境
Print environment using R
我想编写一个函数,其输出是 class myclass
的一个对象,带有向量、列表、整数等。类似于 lm
函数。我尝试使用 environment
,但是当我打印函数值时,结果是
#Term 1
> fit1
<environment: 0x00000000220d1998>
attr(,"class")
[1] "myclass"
然而,当我打印lm
函数时,结果是
> fit2
Call:
lm(formula = variable1 ~ variable2)
Coefficients:
(Intercept) variable2
49.0802 0.3603
我知道使用 $
访问 environment
的各个值。但我希望打印的对象等于 lm
函数,如图所示。
这是你想要的吗?
variable1 <- rnorm(10)
variable2 <- rnorm(10)
fit1 <- lm(variable1~variable2)
fit2 <- fit1
class(fit2) <- "myclass"
# have a look at stats:::print.lm
# and copy that function, hence define it as print method for your class or edit further:
print.myclass <- function (x, digits = max(3L, getOption("digits") - 3L), ...) {
cat("\nCall:\n", paste(deparse(x$call), sep = "\n", collapse = "\n"),
"\n\n", sep = "")
if (length(coef(x))) {
cat("Coefficients:\n")
print.default(format(coef(x), digits = digits), print.gap = 2L,
quote = FALSE)
}
else cat("No coefficients\n")
cat("\n")
invisible(x)
}
# now print
print(fit2)
# or
fit2
我想编写一个函数,其输出是 class myclass
的一个对象,带有向量、列表、整数等。类似于 lm
函数。我尝试使用 environment
,但是当我打印函数值时,结果是
#Term 1
> fit1
<environment: 0x00000000220d1998>
attr(,"class")
[1] "myclass"
然而,当我打印lm
函数时,结果是
> fit2
Call:
lm(formula = variable1 ~ variable2)
Coefficients:
(Intercept) variable2
49.0802 0.3603
我知道使用 $
访问 environment
的各个值。但我希望打印的对象等于 lm
函数,如图所示。
这是你想要的吗?
variable1 <- rnorm(10)
variable2 <- rnorm(10)
fit1 <- lm(variable1~variable2)
fit2 <- fit1
class(fit2) <- "myclass"
# have a look at stats:::print.lm
# and copy that function, hence define it as print method for your class or edit further:
print.myclass <- function (x, digits = max(3L, getOption("digits") - 3L), ...) {
cat("\nCall:\n", paste(deparse(x$call), sep = "\n", collapse = "\n"),
"\n\n", sep = "")
if (length(coef(x))) {
cat("Coefficients:\n")
print.default(format(coef(x), digits = digits), print.gap = 2L,
quote = FALSE)
}
else cat("No coefficients\n")
cat("\n")
invisible(x)
}
# now print
print(fit2)
# or
fit2