如何实现S3类的名称?

时间:2015-12-03 07:49:34

标签: r

如何为我的S3类实现通用函数名称,以便我可以“设置”我的对象的名称。

要检索名称,我只需将其实现为:

names.myobject <- function(x, ...){
   x$y
}

然后我可以做:

names(myobject)

但我不能用它来设置名称:

names(myobject) <- "a"

我想的是:

names.myobject <- function(x, newname){
   x$y <- newnames
}

如何实现“设置”形式的名称?

1 个答案:

答案 0 :(得分:5)

从函数中找出泛型的签名; &#39; setter&#39;是names<-

> names
function (x)  .Primitive("names")
> `names<-`
function (x, value)  .Primitive("names<-")

namesnames<-是所谓的原始函数,方法调度用C实现,因此通常表示您正在使用S3泛型(UseMethod("foo") in通用的主体不存在。

按照模式generic.class = function...实施方法。请记住,setter方法的返回值必须是您已更新的对象

names.myobject <- function(x) x$y
`names<-.myobject` <- function(x, value) { x$y = value; x }