2017-12-08 3 views
0

현재 어떤 요소가 어떤 순서로 벡터에 배치되어 있는지 알아 내려고하고 있습니다. 나는 'character' 타입의 요소를 가진 정말로 큰 벡터로 작업하고있다. 요소는 벡터에 걸쳐 거의 동일하지만 그들은 변경 때때로 다시 같은 원래 값으로 그 변화는 : 나는 unique를 사용하는 경우R의 벡터 요소를 한 번만 변경합니다.

v1 <- c("A","A","A","B","B","B","A","A","B","B","C","C","A") 

내가 얻을 :

"A","B","C" 

하지만 정말 필요한 것은 :

"A","B","A","B","C","A" 

즉 벡터의 원래 순서를 유지하지만 반복하지 않아야합니다. 누구든지 내 문제를 해결할 수있는 기능을 알고 있습니까?

+0

'rle (v1) $ values'. 내가 속지를 찾을 수 있는지 알아 봅니다. – Frank

+0

@Frank이 질문은 특정 문제를 복잡하게 만드는 data.frame에서 행을 제거하라는 특정 질문이 있기 때문에 이것이 특정 질문의 정확한 사본인지 확신 할 수 없습니다. 이것은 아마 다른 질문의 중복이다. – Dason

+1

@Dason 동의, 여전히 지금 찾고 있습니다. 나는 당신의 좋은 대답을 upvoted했지만 diff를 사용하여 여러 가지 너무 영리한 변형을 얻기 전에 그것을 닫는 것이 가장 좋습니다. – Frank

답변

3

rle 함수는 "길이 인코딩을 실행합니다". 기본적으로 각 값이 반복되는 횟수를 알려주는 방식으로 벡터를 인코딩하는 방법을 알려줍니다. 우리는이 값을 얻을 수 있으며 원하는 값을 얻을 수 있습니다.

> v1 <- c("A","A","A","B","B","B","A","A","B","B","C","C","A") 
> rle(v1) 
Run Length Encoding 
    lengths: int [1:6] 3 3 2 2 2 1 
    values : chr [1:6] "A" "B" "A" "B" "C" "A" 
> rle(v1)$values 
[1] "A" "B" "A" "B" "C" "A"