2016-10-07 11 views
2

ある値の区切り記号でベクトルを分割しようとしています。 私は以下のベクトルを持っています:v <- c("A", "B", "C","-" ,"D", "E", "F") この例では、値の区切り文字は ' - 'です。ベクトル内の値デリミタで要素を分割するR

私が望むのは、このベクトルの数がこの区切り文字を含む数個のベクトルを取得することです。なぜなら、その中にどれくらいの数があるのか​​わからないからです。この例では、私が望む結果は、2つのベクトルV1v2のすべきであり、出力は次のように次のようになります。

> v1 
[1] "A" "B" "C" 

> v2 
[1] "D" "E" "F" 

これを行う方法やパッケージがあります?

答えて

3

我々は論理ベクトルにcumsumを使用して、vector秒のlistにしてsplitを行うことができます。

lst <- split(v[v!='-'], cumsum(v=="-")[v!='-']) 
names(lst) <- paste0("v", seq_along(lst)) 

我々はlist2env(ただしお勧めしません)

list2env(lst, envir = .GlobalEnv) 

またはその他を使用し、vectorオブジェクトとしてそれを必要とする場合は、私たちが直接地球環境に

i1 <- v=="-" 
i2 <- v!= "-" 
grp <- cumsum(i1) 
v1 <- v[i2 & grp==0] 
v2 <- v[i2 & grp == 1] 
vectorオブジェクトを作成することができます
関連する問題