2

我正在使用rEMM包并想添加一个与fade.

一点背景知识:此功能是基于数据的时间结构“淡化”数据流。权重计算为w = 2^{-lambda t}。我只想将此方法的权重修改为1/(1+(T-t/c)^lambda). 在这种情况下,我必须将两个附加参数传递给新函数:Tc与原始fade函数进行比较。当前脚本之间的唯一区别似乎是fade.R第 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 回答