如何使用矢量范围在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)的矢量化等价物}
答案 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]