带方括号或方括号内的条件子集

时间:2014-10-08 15:13:16

标签: r

我有两个向量p1,p2他们报告相同的信息,除了p2更精确。所以我想选择比较2并从p2中选择值,除非2个向量之间的差异是> ķ。在这种情况下,我希望在最终产品中选择p1的值" pd"。

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&lt; -p2 [p1,p1-p2&gt; 5]的东西,但不完全是因为这显然没有评估。 p2 [p1-p2&lt; 5]用于选择阳性病例,但跳过条件评估为FALSE的第5种情况。

1 个答案:

答案 0 :(得分: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