连续值之间的最小值

Minimum between consecutive values

我正在寻找类似于 diff 的函数,但我想计算它们之间的最小值而不是计算两个连续值之间的差值。也就是说,如果你有 x <- c(7,3,17,9) 我想要的是 c(3,3,9) 作为输出。 是否有实现此功能的功能(不仅适用于最小值,还适用于最大值或其他功能?

解释:

第一个值(3)是前两个元素之间的最小值min(c(7,3))

第二个值(3)是第二个和第三个元素之间的最小值 min(c(3,17))

第三个值(9)是第三个和第四个元素之间的最小值min(c(17,9))

使用pmin()计算两个或多个向量的每个元素之间的最小值。使用 head()tail() 创建一对大小和偏移向量。

> x = c(7,3,17,9)
> pmin(head(x, -1), tail(x, -1))
[1] 3 3 9

优于 rollapply() 的两个优点是它不需要额外的包,并且相同的语法在向量长度为​​ 0 时有效,因此在您可能希望重用的脚本或函数中更加健壮.

> x = numeric(); pmin(head(x, -1), tail(x, -1))
numeric(0)
> x = numeric(); rollapply(x, 2, min)
Error in max(sapply(dat, length)) : invalid 'type' (list) of argument