ベクトル範囲を使用して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)}
ベクトル範囲を使用して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)}
Map
機能を使用できます。ここで
unlist(Map(`:`, V1, V2))
[1] 1 2 3 10 11 12 20 21
は、あなたが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]
は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
これは 'Map'に比べて2倍以上高速です。ありがとう – Bulat
ありがとうPsidom、これは問題を解決します。 – BrentL