如何 mirror/reflect 相对于最后一个值的向量

How to mirror/reflect a vector relative to the last value

vector相对于最后一个值如何体现,我不知道怎么用文字来解释,所以我用图片来展示

我试着自己做,但我的代码只适用于线性向量

x <- 1:10 # some linear vector
y <- rev(cumsum(c(tail(x,1),diff(x))))

plot(rep(NA,20),t="l" , ylim = c(1,20))
lines(x,col=2,lwd=5)
lines(y,col=4,lty=5)

如果我采用任意向量,我的代码将不起作用

set.seed(123)
x <- cumsum(rnorm(10))  # real vector
y <- rev(cumsum(c(tail(x,1),diff(x))))

plot(rep(NA,20),t="l" , ylim = c(-5,10))
lines(x,col=2,lwd=5)
lines(y,col=4,lty=5)

我想你追求的是

set.seed(123)
x <- cumsum(rnorm(10))

y <- x-2*(x-tail(x,1))

plot(rep(NA,20),t="l" , ylim = c(-5,10))
lines(x,col=2,lwd=5)
lines(y,col=4,lty=5)

x-2*(x-tail(x,1)) 部分相对于行中的最后一个点调整每个点。基本上你找到距离并减去两倍的距离以移动最后一点的“相反侧”。您可以移动术语以简化为

y <- 2*tail(x,1)-x