R 如何在向量中找到唯一序列?
我想在向量中找到唯一的序列。序列是一系列相同的值。如果一个序列重复,只要中间有另一个序列,它就算作两个序列。序列的长度可以为一个值 因此,如果我的函数名为findSequences(),它的工作方式如下:R 如何在向量中找到唯一序列?,r,R,我想在向量中找到唯一的序列。序列是一系列相同的值。如果一个序列重复,只要中间有另一个序列,它就算作两个序列。序列的长度可以为一个值 因此,如果我的函数名为findSequences(),它的工作方式如下: my_vector = c('a', 'a', 'b', 'a', 'c', 'c', 'b') find_Sequences(my_vector) > 'a', 'b', 'a', 'c', 'b' unique()和distinct()不这样做 您可以使用rle rle(my
my_vector = c('a', 'a', 'b', 'a', 'c', 'c', 'b')
find_Sequences(my_vector)
> 'a', 'b', 'a', 'c', 'b'
unique()和distinct()不这样做 您可以使用
rle
rle(my_vector)$values
#[1] "a" "b" "a" "c" "b"
您可以使用游程编码
rle
功能:
rle(c('a', 'a', 'b', 'a', 'c', 'c', 'b'))
Run Length Encoding
lengths: int [1:5] 2 1 1 2 1
values : chr [1:5] "a" "b" "a" "c" "b"
值
字段告诉您需要什么。您可以使用与前面项目的比较:
my_vector[c(TRUE, my_vector[-1] != my_vector[-length(my_vector)])]
它应该比
rle
更好,因为它用更少的代码做同样的事情。我们也可以使用data.table::rleid
和duplicated
来获得唯一的序列
my_vector[!duplicated(data.table::rleid(my_vector))]
#[1] "a" "b" "a" "c" "b"