连续值之间的最小值

时间:2018-02-12 11:38:02

标签: r minimum

我正在寻找类似于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))

之间的最小值

1 个答案:

答案 0 :(得分:5)

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

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

rollapply()的两个优点是它不需要额外的包,并且当向量长度为​​0时,相同的语法也可以工作,因此在您希望重用的脚本或函数中更加健壮。< / p>

> 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