使用两个向量构建索引向量,其中第一个包含起始indeces,第二个结尾使用R.

时间:2016-08-03 12:31:30

标签: r

我有两个向量:

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

2 个答案:

答案 0 :(得分:2)

我们可以使用Map来获取vectorunlist 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