Я хочу найти способ определить, равны ли два или более непрерывных элемента вектора.
Например, в векторе x=c(1,1,1,2,3,1,3)
первый, второй и третий элементы равны.
С помощью следующей команды я могу определить, содержит ли вектор, скажем, y
, два или более непрерывных элемента, равных 2
или 3
all(rle(y)$lengths[which( rle(y)$values==2 | rle(y)$values==3 )]==1)
Есть ли другой способ быстрее?
EDIT
Допустим, у нас есть вектор z=c(1,1,2,1,2,2,3,2,3,3)
.
Я хочу вектор с тремя элементами в качестве вывода. Первый элемент будет ссылаться на значение 1
, второй на 2
, а третий на 3
. Значения элементов выходного вектора будут равны 1
, если два или более непрерывных элемента z
одинаковы для одного значения 1,2,3
и 0
в противном случае. Итак, выход для вектора z
будет (1,1,1)
.
Для вектора w=c(1,1,2,3,2,3,1)
выходное значение будет 1,0,0
, поскольку только для значения 1
есть два непрерывных элемента, то есть в первом и во втором положении w
.