连续值之间的最小值
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
我正在寻找类似于 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