R S4类,成员函数没有效果

时间:2016-10-09 01:08:52

标签: r function member

我为S4类(编程语言R)定义了一个成员函数,它应该将元素添加到列表中,但它什么都不做:

setClass("ListHolder",
representation(
    .list   = "list"
),
prototype(
    .list   = list()
))
setGeneric("add",
function(this,i) standardGeneric("add")
)
setMethod("add",
signature(this="ListHolder",i="numeric"),
definition = function(this,i){

    k <- length(this@.list)
    this@.list[[k+1]] <- i
})

testListHolder <- function(){

    lh <- new("ListHolder")  
    for(i in 1:10) add(lh,i)
    print(lh@.list)
}

testListHolder()

这将打印一个空列表。这是怎么回事?

1 个答案:

答案 0 :(得分:1)

添加功能是问题所在:您要做的是将对象__str__传递给函数并对其进行修改, R 不支持。

所以,在上面的代码中:

  1. setMethod: 添加(对象,i),在功能添加的末尾添加ListHolder语句。
  2. testListHolder:添加之后替换return(this)lh
  3. 编辑:还检查this(使用函数修改对象)问题