【问题标题】:Subset adjacent values around one value围绕一个值对相邻值进行子集
【发布时间】:2019-04-04 03:03:57
【问题描述】:

我有一个数字向量:

v <- seq(1, 50, .5)

如果我想围绕一个特定数字对所有相邻的三个值进行子集化:25。

24 24.5 25
24.5 25 25.5
25 25.5 26

有什么方便的方法吗?

【问题讨论】:

    标签: r


    【解决方案1】:

    你可以使用绝对差:

    v[abs(v-25) <= 1]
    

    【讨论】:

    • 多么荒谬的想法!
    【解决方案2】:

    这是一个将值 25 周围的值子集化的选项,然后将其转换为每个 3 个元素的 matrix

    v1 <- v[which(v == 25)  +  (-2:2)]
    embed(v1, 3)[, 3:1]
    #      [,1] [,2] [,3]
    #[1,] 24.0 24.5 25.0
    #[2,] 24.5 25.0 25.5
    #[3,] 25.0 25.5 26.0
    

    【讨论】:

    • 我想你也可以用序列来完成这一切,对于n &lt;- 3 例如:v[which(v==25) + (-n+1):0 + rep(seq_len(n)-1,each=n)]
    • @tthelatemail 是的,这是可能的
    猜你喜欢
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多