2014-10-08 224 views
2

我有兩個向量p1,p2他們報告相同的信息,除了p2更精確。所以我想挑選比較2並從p2中選擇值,除非2個向量之間的差異大於k。在這種情況下,我希望在最終產品「pd」中選擇來自p1的值。有方括號的方括號或方括號內

k <- 5 
p1 <- c(21,43,62,88,119,156,264) 
p2 <- c(19,42,62,84,104,156,262) 

PD應該是這樣的:

pd <- c(19,42,62,84,119,156,262) 

我所看到的指定方括號內選擇條件的代碼,但無法弄清楚如何複製它。類似於pd < - p2 [p1,p1-p2> 5],但不完全是因爲這顯然不能評估。 p2 [p1-p2 < 5]用於選擇肯定的情況,但第五種情況是條件評估爲FALSE的情況被跳過。

回答

1

可能

ifelse(abs(p2-p1) <=k, p2, p1) 
#[1] 19 42 62 84 119 156 262 

使用或不使用ifelse

indx <- abs(p1-p2) >k 
pd <- p2 
pd[indx] <- p1[indx] 
pd 
#[1] 19 42 62 84 119 156 262 
+0

是當然的,現在很明顯。謝謝! – user2004820 2014-10-08 15:41:22