2

私はrEMMパッケージで作業しており、に非常によく似た機能を追加したいと考えていますfade

ちょっとした背景: この関数は、データの時間構造に基づいてデータ ストリームを「フェージング」します。重みは次のように計算されw = 2^{-lambda t}ます。このメソッドの重みのみを に変更したいと思い1/(1+(T-t/c)^lambda)ます。この場合、新しい関数に渡さなければならない追加のパラメーターが 2 つあります。元の関数Tc比較しfadeます。現在のスクリプトfade.Rとの唯一の違いは、 new を作成する 24 ~ 30 行目lambda_factorです。

私はそれを行う方法がまったくわかりません。

どんな助けでも大歓迎です。

4

2 に答える 2

4

の作者は指定できるパラメータとしてfade公開しているようです。lambdaでコードを見るとshowMethods(fade, includeDef=TRUE)、すべてが で終わりrEMM:::.fadeます。

> rEMM:::.fade
function (x, t = 1, lambda = NULL) 
{
    if (is.null(lambda)) 
        lambda_factor <- x@tnn_d$lambda_factor
    else lambda_factor <- 2^(-lambda)
    x@tnn_d$counts <- x@tnn_d$counts * lambda_factor^t
    x@tracds_d$mm <- smc_fade(x@tracds_d$mm, lambda_factor^t)
    invisible(x)
}
<environment: namespace:rEMM>

したがって、新しい関数を作成する代わりに、この関数で使用される変換と一致するlambdaように変換して、好きな方法で計算してみませんか?lambda_factor

mylambda <- function(t, lambda, T, c)
    -log(1/(1+(T-t/c)^lambda)), 2) / t

そして、次fadeのように呼び出します

fade(x, t, mylambda(t, lambda, T, c))

? これをさらに次のようにラップします。

myfade <- function(x, t, lambda)
    fade(x, t, mylambda(t, lambda, T, c))
于 2012-07-27T13:56:35.013 に答える
2

次のような現在のフェード関数のコードがある場合:

fade <- function(...){
  ...
}

そのコードをコピーし、必要な変更を加えて (必要なものはわかっているようです)、コードを実行するだけです。新しい関数がグローバル環境に表示され、fade(...) を呼び出すたびに呼び出されます。

于 2012-07-27T06:50:47.663 に答える