处理矢量中的元素对

时间:2015-06-10 15:40:55

标签: arrays r iteration binary-operators

是否有任何标准函数可以应用于单个向量来处理每个步骤的两个元素?

例如,我们有vector:

> a <- c(8, 4, 5, 5, 7, 10)

我们要减去两个邻居元素:

> func(a, function (x1, x2) { x1-x2 })

[1] 4 -1 0 -2 -3

1 个答案:

答案 0 :(得分:2)

一般情况下,如果你想成对处理连续的向量元素,你可以得到每对中的第一个元素:

(first <- head(a, -1))
# [1] 8 4 5 5 7

你可以用

获得每对中的第二个元素
(second <- tail(a, -1))
# [1]  4  5  5  7 10

然后,您可以对连续元素执行任何操作。例如,这是您的操作:

first-second
# [1]  4 -1  0 -2 -3

这是连续元素的产物:

first*second
# [1] 32 20 25 35 70

请注意,您的操作实际上很常见,因此有一个专门的函数可以获取连续元素diff的差异。