2016-03-23 2 views
1

Заголовок гласит все: как бы я код такой повторяющейся последовательности, где базовая единица повторения: вектор c (1,1,1,2) - повторяется 4 раза, но каждый раз увеличивает значения в векторе на 2?R: Как сделать последовательность (1,1,1,2,3,3,3,4,5,5,5,6,7,7,7,8)

Я пробовал различное повторение, раз, каждый, последовательность и не могу получить нужный результат из ..

ответ

5
c(1,1,1,2) + rep(seq(0, 6, 2), each = 4) 
# [1] 1 1 1 2 3 3 3 4 5 5 5 6 7 7 7 8 
+0

Спасибо Luke (и другим вкладчикам) – Matt

1

Я не уверен, если я правильно, но что случилось с чем-то, как простым как:

rep<-c(1,1,1,2) 
step<-2 
vec<-c(rep,step+rep,2*step+rep,3*step+rep) 
0

Как насчет:

input <- c(1,1,1,2) 
n <- 4 
increment <- 2 
sort(rep.int(seq.int(from = 0, by = increment, length.out = n), length(input))) + input 

[1] 1 1 1 2 3 3 3 4 5 5 5 6 7 7 7 8 
4

rep функция позволяет вектор той же длины, что и x, который будет использоваться в аргументе times. Мы можем расширить желаемый шаблон с помощью суперсекретного rep_len.

rep(1:8, rep_len(c(3, 1), 8)) 
#[1] 1 1 1 2 3 3 3 4 5 5 5 6 7 7 7 8 
+0

Привод by downvote? –

1

Я принял Луку, как это самый простой для меня, чтобы понять (и ближе к тому, что я уже пробовал, но, не с!)

Я использовал этот окончательный вид:

> c(1,1,1,2)+rep(c(0,2,4,6),each=4) 
[1] 1 1 1 2 3 3 3 4 5 5 5 6 7 7 7 8 
1

вы можете сделать:

pattern <- rep(c(3, 1), len = 50) unlist(lapply(1:8, function(x) rep(x, pattern[x]))) [1] 1 1 1 2 3 3 3 4 5 5 5 6 7 7 7 8

Это позволяет просто регулировки оборотов t длина рисунка под rep(len = X) и удаляет любое использование добавления, которое показывают некоторые другие ответы.

Смежные вопросы