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