【发布时间】:2019-08-05 21:02:27
【问题描述】:
我有一个向量
x = c(1820.0, 2235.0, 2534.0, 2580.0, 2322.0, 2317.0, 2331.0, 2345.0,
2305.0, 2265.0, 2277.0, 2289.0, 2338.0, 2387.0, 2152.0, 2256.0,
2360.0, 2590.0, 2529.0, 2468.0, 2776.0, 2909.0, 3017.0, 3081.0,
3118.5, 3156.0, 3338.0, 3211.5)
我想计算除边之外的每个元素的左右邻居的平均值。例如,结果应该是这样的:mean(1820,2534), mean(2235,2580), mean(2534,2322) ...
我可以使用循环来做到这一点,但这很慢。我需要一个矢量化的解决方案。
我的代码使用了 for 循环:
neighbour_m = function(x) {
newx = c(x[length(x)], x, x[1])
for (i in 2:(length(newx) - 1)){
m = mean(c(newx[i-1], newx[i+1]))
}
}
【问题讨论】:
标签: r