2016-10-09 6 views
0

は効果がありませんが、それは何もありません:R S4クラスは、メンバ関数は、私は、リストに要素を追加することになっている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([email protected]) 
    [email protected][[k+1]] <- i 
}) 

testListHolder <- function(){ 

    lh <- new("ListHolder") 
    for(i in 1:10) add(lh,i) 
    print([email protected]) 
} 

testListHolder() 

この意志を空のリストを出力します。ここで何が起こっているのですか?

答えて

1

機能を追加する問題である:何がやりたいことは関数にオブジェクトListHolderを渡すとRはサポートしていない、それを変更しています。

ので、上記のコードの中で:

  1. のsetMethod:を追加アドオン(オブジェクトは、i)は、機能の終わりにreturn(this)ステートメントを追加します。
  2. testListHolder:を追加lhを置き換える、for(i in 1:10) lh <- add(lh,i)

EDIT:も(オブジェクトを変更するために使用する機能)thisをチェック質問

+0

@Xiatao羅:助けのおかげ。 – gcc

関連する問題