2010-04-15 59 views
1

我有一個數字載體,它包含了重複元件的貼片,喜歡的東西:找到等於數據的連續區段中的矢量

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

Duplicate:http://stackoverflow.com/questions/1502910/ – 2010-04-15 09:29:42

+0

我upvoted的評論,因爲我發現鏈接有用,但我不認爲這是一個重複的問題。我仍然在使用自己的解決方案將代碼分發給我的用戶。 – mariotomo 2010-07-05 13:59:05

回答

2

寫作的問題在這裏可以幫助思考解決方案...我發現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] 
} 
相關問題