众所周知,我们可以添加一个课程" fun"在abc
使用
class(abc) <- append(class(abc), "fun")
之后abc
会给我们:
> abc <- matrix(1:4, nr=2)
> class(abc) <- append(class(abc), "fun")
> abc
[,1] [,2]
[1,] 1 3
[2,] 2 4
attr(,"class")
[1] "matrix" "fun"
有没有办法追加课程&#34;有趣&#34;到abc
但没有显示
attr(,"class")
[1] "matrix" "fun"
要明确的是,以下是我得到的:
> abc <- list(1:4, letters[1:3])
> abc
[[1]]
[1] 1 2 3 4
[[2]]
[1] "a" "b" "c"
> class(abc) <- append(class(abc), "fun")
> abc
[[1]]
[1] 1 2 3 4
[[2]]
[1] "a" "b" "c"
attr(,"class")
[1] "list" "fun"
> class(abc)
[1] "list" "fun"
但我想:
> abc <- list(1:4, letters[1:3])
> abc
[[1]]
[1] 1 2 3 4
[[2]]
[1] "a" "b" "c"
> class(abc) <- append(class(abc), "fun")
> abc
[[1]]
[1] 1 2 3 4
[[2]]
[1] "a" "b" "c"
> class(abc)
[1] "list" "fun"
谢谢!
答案 0 :(得分:1)
您可以为您的班级编写自定义print()
方法。
print.fun <- function(x) {
class(x) <- Filter(function(x) x!="fun", class(x))
print(x)
}
请注意,因为您要将自定义类附加到类列表的末尾,如果找到列表中较早值的其他打印方法,则会使用该方法。