У меня длинный вектор в R, в котором последовательная ценность часто повторяется. НапримерОт [0.2, 0.2, 0.2] до «R 0.2 3»
x = c(rep(0.2, 1500), rep(0.1, 10007), 0.7, 0.9, rep(0.1, 9784))
Я пытаюсь написать функцию, которая принимает этот вектор в качестве входных данных и возвращать либо из двух следующих строк
s = "R 0.2 1500 R 0.1 10007 R 0.7 1 R 0.9 1 R 0.1 9784"
или преимущественно
s = "R 0.2 1500 R 0.1 10007 0.7 0.9 R 0.1 9784"
, где R 0.7 1 R 0.9 1
стали 0.7 0.9
.
Для вашей интуиции R
означает repeat
или rep
. Поэтому строка тесно связана с тем, как я построил вектор x
.
Я пробовал перебирать каждое значение, но это было слишком медленно для моих нужд. Можете ли вы помочь мне найти быстрое решение?
Вы посмотрели на 'rle'? –
'rle' - это действительно путь. Можно ответить на любой из 3 ответов, предложенных в комментариях. –