我有两个向量:
startIdxes<-c(1, 5, 12, 22)
endIdxes<-c(2, 9, 17, 25)
载体呈现范围,例如1:2,5:9 ...... 如何使用这两个向量构建索引向量? 索引向量应为:
> c(1:2, 5:9, 12:17, 22:25)
[1] 1 2 5 6 7 8 9 12 13 14 15 16 17 22 23 24 25
答案 0 :(得分:2)
我们可以使用Map
来获取vector
和unlist
list
输出中相应值之间的序列。
unlist(Map(`:`, startIdxes, endIdxes))
#[1] 1 2 5 6 7 8 9 12 13 14 15 16 17 22 23 24 25
函数Map
是
Map
function (f, ...)
{
f <- match.fun(f)
mapply(FUN = f, ..., SIMPLIFY = FALSE)
}
另一个选择是获得两个向量之间的差异,并添加&quot; startIdxes&#39; sequence
的差异,与原始的&#39; startIdxes&#39;相结合。和sort
。
i1 <- endIdxes - startIdxes
sort(c(startIdxes, rep(startIdxes, i1) + sequence(i1)))
#[1] 1 2 5 6 7 8 9 12 13 14 15 16 17 22 23 24 25
答案 1 :(得分:1)
您可以使用mapply
unlist(mapply(seq,startIdxes,endIdxes))
#[1] 1 2 5 6 7 8 9 12 13 14 15 16 17 22 23 24 25