Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何在向量中找到唯一序列?_R - Fatal编程技术网

R 如何在向量中找到唯一序列?

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

我想在向量中找到唯一的序列。序列是一系列相同的值。如果一个序列重复,只要中间有另一个序列,它就算作两个序列。序列的长度可以为一个值

因此,如果我的函数名为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_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"