我有以下变量:
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.1
和minus.1
,以便它与data.loc
相同
答案 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]