r - 如何每次检查向量 (R) 中是否有 n 个升序/降序值

标签 r

我有一个向量,我想在每次它包含长度为 n 的升序/降序值序列时进行检查。到目前为止我所知道的是,我可以在向量上使用 !is.unsorted() 和 is.unsorted() 来确定它是升序还是降序,但不知道如何对每个元素执行此操作。任何建议将不胜感激!

v <- c(1,2,1,4,5,7,8,10,6,4,2,1,2)
n <- 5

我希望输出一个包含 1、-1 和 0 的向量,用于升序、降序和未排序。在这种情况下,它将输出:

[1] 0 0 0 0 0 0 1 1 0 0 0 -1 0

抱歉,如果这令人困惑。

最佳答案

使用data.table包:

d <- data.table::frollsum(sign(diff(v)), n - 1, 0)
c(0, data.table::fcase(d == n - 1, 1, d == 1 - n, -1, default = 0))

[1]  0  0  0  0  0  0  1  1  0  0  0 -1  0

计算相邻差异并取符号(检测升序/降序)。然后计算滚动总和并检测该总和何时等于 n-1(n 个连续升序元素)或 1-n(n 个连续降序元素)。

关于r - 如何每次检查向量 (R) 中是否有 n 个升序/降序值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71318422/

相关文章:

r - 如何将 Qualtrics 数据(以 csv 格式)导入 R

windows - 如何使用 UTF-8 编码编织 2html?

r - 将字符串矩阵拆分为R中的数字矩阵

r - rgl.postscript:保存的文件不改变文本大小

r - 我可以使用 RPostgreSQL 包将 PostGIS 栅格数据类型导入到 R 中吗?

r - 根据过去 15 分钟计算每行大数据框的平均值

r - glmmTMB 中的收敛标准 - 我有哪些选择?

r - 将点添加到配对图中?

R 代码段错误 : lazy-load database 'P' is corrupt

r - 维恩图中标签位置、形状和重叠颜色的问题