2016-05-10 11 views
0

ベクトル範囲を使用してRでベクトルを作成するにはどうすればよいですか?たとえば、範囲制限を指定するベクトルが2つあるとします。複数の範囲を使用してベクトルを作成する

c(V1:V2) 

[1] 1 2 3 10 11 12 20 21 

{これは、C(1のベクトル化と同等であることを意味する:3,10:12,20

V1=c(1,10,20) 

V2=c(3,12,21) 

は、私は直感的に次のようになります何かをしたい、と言います: 21)}

答えて

5

Map機能を使用できます。ここで

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

ありがとうPsidom、これは問題を解決します。 – BrentL

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] 
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

これは 'Map'に比べて2倍以上高速です。ありがとう – Bulat

関連する問題