2014-10-08 168 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