給定一個有序向量vec <- c(1, 4, 6, 3, 2, 7)
,我想計算每個元素i
的vec
以前元素的加權平均值,其中權重是與元素i
之間的距離的倒數。R:計算一個有序向量的先前元素
該功能應繼續如下。
- 對於第一個元素
1
,應該返回NA
(沒有以前的元素)。 - 對於第二個元素
4
,應該返回1
。 - 對於第三個元素
6
,應該返回weighted.mean(x = c(1,4), w = c(1,2))
。 - 對於第四元件
3
,應該返回weighted.mean(x = c(1,4,6), w = c(1,2,3))
所得載體result
應,與length(result) == length(vec)
,c(NA, 1, 3, 4.5, 3.9, 3.266667)
。
更新: 我清楚的意思是不使用循環
result <- numeric()
for (i in 1:length(vec)) {
if (i == 1) {
result <-
c(result, NA)
} else {
previous_elements <- vec[1:(i-1)]
result <-
c(result,
weighted.mean(x = previous_elements, w = 1:length(previous_elements)))
}
}
請顯示您的努力以及它出錯的地方。 –
可能的重複:http://stackoverflow.com/q/743812/903061 - 雖然它不是專門針對* weighted *移動平均值,但許多方法(例如'RcppRoll')都提供了該功能。 – Gregor
[Here's another](http://stackoverflow.com/q/8720055/903061),雖然看起來有些過時。 – Gregor