【问题标题】:How to treat an object of a class same as another for a generic如何将一个类的对象与泛型的另一个对象相同
【发布时间】:2016-09-13 13:00:05
【问题描述】:

我已将一个对象分类为 NewClass,我如何在对象上使用函数,比如 plot,就好像它是已知类的,比如 hist?

【问题讨论】:

    标签: r r-s3


    【解决方案1】:

    简单:只需提供所需的方法:

    plot.NewClass = function(x, y, ...) { … }
    

    在最简单的情况下,您可以在实现中分派到另一个 plot 方法。

    如果您的NewClass 对象实际上是伪装的histogram 对象,您可以使用以下技巧:

    plot.NewClass = function (x) {
        # “unmask” histogram object
        class(x) = 'histogram'
        plot(x)
    }
    

    【讨论】:

    • 我是 r 编程新手,所以我不太了解这里的语法。我究竟如何调度到另一个绘图方法(这种情况下我想像直方图对象一样进行绘图)
    • @ChuckP 通过调用它。或者,在最简单的情况下,只需使您的函数等于直方图的函数(但这要求这些对象非常相似):plot.NewClass = graphics:::plot.histogram — 请注意三个冒号:plot.histogram 不是从 @987654328 导出的@ 所以你需要说服 R 访问命名空间中的隐藏对象。这是通过:::完成的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 2017-02-14
    • 2023-03-14
    • 2023-03-11
    相关资源
    最近更新 更多