【问题标题】:find contiguous stretches of equal data in a vector在向量中找到连续的相等数据段
【发布时间】:2010-04-15 08:23:32
【问题描述】:

我有一个数字向量,它包含重复的元素块,例如:

R> data <- c(1,1,1,2,2,2,3,3,2,2,2,2,2,3,3,1,1,1,1,1)
R> data
 [1] 1 1 1 2 2 2 3 3 2 2 2 2 2 3 3 1 1 1 1 1
R> 

我需要提取等于特定值的连续元素补丁......但我只对特定位置周围的补丁感兴趣。所以,我的输入是:(1)数字向量,(2)所需值,(3)位置。我想返回一个逻辑向量,指示哪些位置满足请求。

如果在那个位置数据不等于值,我返回所有FALSE

不全是F 的可能结果是:

 [1] 1 1 1 2 2 2 3 3 2 2 2 2 2 3 3 1 1 1 1 1

 [1] T T T F F F F F F F F F F F F F F F F F
 [2] F F F T T T F F F F F F F F F F F F F F
 [3] F F F F F F T T F F F F F F F F F F F F
 [4] F F F F F F F F T T T T T F F F F F F F
 [5] F F F F F F F F F F F F F T T F F F F F
 [6] F F F F F F F F F F F F F F F T T T T T

【问题讨论】:

  • 我赞成该评论,因为我发现该链接很有用,但我不认为这是一个重复的问题。在分发给用户的代码中,我仍在使用自己的解决方案。

标签: r


【解决方案1】:

在这里写问题有助于思考解决方案……我找到了a related question,所以我可以想出这个:

contiguousequal <- function(data, value, position) {
  if(data[position] != value)
    return(rep(FALSE, length(data)))
  id <- cumsum(c(1, as.numeric(diff(data) != 0)))
  id == id[position]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    相关资源
    最近更新 更多