我正在使用rEMM
包并想添加一个与fade
.
一点背景知识:此功能是基于数据的时间结构“淡化”数据流。权重计算为w = 2^{-lambda t}
。我只想将此方法的权重修改为1/(1+(T-t/c)^lambda)
. 在这种情况下,我必须将两个附加参数传递给新函数:T
并c
与原始fade
函数进行比较。当前脚本之间的唯一区别似乎是fade.R
第 24-30 行,我将在其中创建新的lambda_factor
.
我完全不知道该怎么做。
任何帮助,将不胜感激。
我正在使用rEMM
包并想添加一个与fade
.
一点背景知识:此功能是基于数据的时间结构“淡化”数据流。权重计算为w = 2^{-lambda t}
。我只想将此方法的权重修改为1/(1+(T-t/c)^lambda)
. 在这种情况下,我必须将两个附加参数传递给新函数:T
并c
与原始fade
函数进行比较。当前脚本之间的唯一区别似乎是fade.R
第 24-30 行,我将在其中创建新的lambda_factor
.
我完全不知道该怎么做。
任何帮助,将不胜感激。
的作者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))
如果您有当前淡入淡出功能的代码,如下所示:
fade <- function(...){
...
}
只需复制该代码,进行所需的修改(您似乎知道自己想要什么),然后运行代码。您的新函数将出现在全局环境中,并且在您每次调用 fade(...) 时都会被调用。