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