隐藏属性/类名称

时间:2015-02-24 04:53:26

标签: r

众所周知,我们可以添加一个课程" 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" 

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以为您的班级编写自定义print()方法。

print.fun <- function(x) {
    class(x) <- Filter(function(x) x!="fun", class(x))
    print(x)
}

请注意,因为您要将自定义类附加到类列表的末尾,如果找到列表中较早值的其他打印方法,则会使用该方法。