[英]apply, mapply? I`m trying to calculate weighted moving average in R
我有兩個列/向量,我想獲得加權平均值。 我發現了這一點,但無法將lambda更改為colum / vector。
wma.func = function(rets, lambda) {
sig.p = rets[1]
sig.s = vapply(rets, function(r) sig.p <<- sig.p*lambda + (r)*(1 - lambda), 0)
return(sig.s)
}
我需要這樣的東西:
lwma.func = function(rets, wt) {
sig.p = rets[1]
sig.w = wt[1] ????
print(wt[1:10])
sig.s = vapply(rets, function(r) sig.p <<- sig.p*sig.w + (r)*(1 - sig.w), 0)
return(sig.s)
}
因此,在每一行中,它會將最后一個值乘以該特定行的權重再加上實際值乘以一個減去特定行所得的值。
我也不太了解
function(r) sig.p <<- sig.p*sig.w + (r)*(1 - sig.w)
此功能有效嗎? <<-是什么意思?
謝謝您的幫助。
這是一種data.table
方法:
library("data.table")
set.seed(4444)
df <- data.frame(value = round(runif(10, 1 , 1000), 0),
weight = round(runif(10, 0.1, 0.99), 2))
setDT(df)
df[, new := shift(x = value, n = 1, type = "lag") * weight + value * (1 - weight)]
PS您可以通過輸入?`<<-`
來查找<<-
運算符,這基本上告訴您,它為父環境分配了一個值,而不僅僅是函數的直接環境。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.