创建排序列表的中点列表

Create a list of midpoints of a sorted list

我有一个排序的数值向量,我想创建一个包含所有对的中点的新向量。例如:

a <- c(1,2,3,4)

我想创建 b,使其包含 (1,2)(2,3)(3,4):

的中点
b <- c(1.5, 2.5, 3.5)

正如@Khashaa 在评论中指出的那样,您可以在使用 embed 之后使用 rowMeans,或者您可以使用 "zoo" 包中的 rollmean

示例:

a <- 1:4

rowMeans(embed(a, 2))
# [1] 1.5 2.5 3.5

library(zoo)
rollmean(a, 2)
# [1] 1.5 2.5 3.5

如果这些太晦涩难懂,一个类似的概念就是组合向量的两个版本,一个缺少第一个值,一个缺少最后一个值,然后使用 rowMeans.

示例:

rowMeans(cbind(head(a, -1), tail(a, -1)))
# [1] 1.5 2.5 3.5