使用多个范围在R中创建向量

时间:2016-05-10 19:28:36

标签: r range vectorization

如何使用矢量范围在R中创建矢量。例如,假设我有两个指定范围限制的向量。说,

V1=c(1,10,20)

V2=c(3,12,21)

我想做一些看似直观的事情:

c(V1:V2)

[1] 1 2 3 10 11 12 20 21

{这意味着是c(1:3,10:12,20:21)的矢量化等价物}

3 个答案:

答案 0 :(得分:5)

您可以使用Map功能。

unlist(Map(`:`, V1, V2))
[1]  1  2  3 10 11 12 20 21

答案 1 :(得分:4)

以下是使用 data.table 包的替代方法。如果我们创建分组变量,我们可以按每个组运行:,然后在最后抓取列。

library(data.table)
data.table(id = seq_along(V1), V1, V2)[, V1:V2, by = id]$V1
# [1]  1  2  3 10 11 12 20 21

答案 2 :(得分:2)

以下是使用data.table

执行此操作的方法
library(data.table)
dt <- data.table(V1, V2)
dt <- dt[rep(1:.N, V2-V1+1), i := .I, by = V1][,
         res := 0:(.N-1) + V1, by = i]