найти непрерывные отрезки равных данных в векторе - PullRequest
1 голос
/ 15 апреля 2010

У меня есть числовой вектор, он содержит участки повторяющихся элементов, что-то вроде:

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

1 Ответ

2 голосов
/ 15 апреля 2010

написание вопросов здесь помогает думать о решениях ... и я нашел связанный вопрос , чтобы я мог придумать этот:

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]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...