如何按特定顺序组合2个向量?

时间:2015-07-12 09:23:50

标签: r vector

我有以下变量:

loc.dir <- c(1, -1, 1, -1, 1, -1, 1)
max.index <- c(40, 46, 56, 71, 96, 113, 156)
min.index <- c(38, 48, 54, 69, 98, 112, 155)

我的目标是产生以下内容:

data.loc <- c(40, 48, 56, 69, 96, 112, 156)

用文字表示,我会看每个元素loc.dir。如果第i个元素是1,那么我将使用max.index中的第i个元素。另一方面,如果第i个元素为-1,那么我将使用min.index中的第i个元素。

我可以使用以下内容获取data.loc中的元素:

plus.1 <- max.index[which(loc.dir == 1)]
minus.1 <- min.index[which(loc.dir == -1)]

但现在我不知道如何合并plus.1minus.1,以便它与data.loc相同

1 个答案:

答案 0 :(得分:3)

ifelse就是为此设计的:

ifelse(loc.dir == 1, max.index, min.index)
#[1]  40  48  56  69  96 112 156

它做了类似的事情:

res <- min.index
res[loc.dir == 1] <- max.index[loc.dir == 1]