2016-10-07 2 views
2

특정 값 구분 기호에서 벡터를 분할하려고합니다. 다음 벡터를 가지고 있습니다 : v <- c("A", "B", "C","-" ,"D", "E", "F") 이 예제에서는 값 구분 기호가 '-'라고 가정 해 봅시다.벡터의 값 구분 기호에서 요소 분할 R

내가 원하는 것은이 벡터의 수만큼이 벡터가이 구분 기호를 포함하는 여러 벡터를 얻는 것입니다. 왜냐하면 그 중 얼마나 많은 문자가이 문자인지 알지 못하기 때문입니다.

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

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

는이 작업을 수행하는 방법 또는 패키지가 있습니까 :이 예에서는 내가 원하는 결과가 같은 두 벡터 V1V2 및 출력이 될 수 있어야 ?

답변

3

논리 벡터에 cumsum을 사용하고 listvector으로 바꾸어 split을 수행 할 수 있습니다. 우리가 vector 객체로 필요한 경우

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]