varias numeros leyendas impares graficos grafico graficas generar dispersion r numbers sequence

numeros - seq en r



R-Generar una secuencia de nĂºmeros (4)

Estoy tratando de crear secuencias de 6 casos, pero con intervalos de 144 casos.

Como este por ejemplo

c(1:6, 144:149, 288:293) 1 2 3 4 5 6 144 145 146 147 148 149 288 289 290 291 292 293

¿Cómo podría generar automáticamente tal secuencia con

seq

¿O con otra función?


Aquí hay un enfoque:

unlist(lapply(c(0L,(1:2)*144L-1L),`+`,seq_len(6))) # or... unlist(lapply(c(1L,(1:2)*144L),function(x)seq(x,x+5)))

Aquí hay una manera que me gusta un poco mejor:

rep(c(0L,(1:2)*144L-1L),each=6) + seq_len(6)

Generalizando ...

rlen <- 6L rgap <- 144L rnum <- 3L starters <- c(0L,seq_len(rnum-1L)*rgap-1L) rep(starters, each=rlen) + seq_len(rlen) # or... unlist(lapply(starters+1L,function(x)seq(x,x+rlen-1L)))


Encuentro que la función de sequence es útil en este caso. Si tuvieras tus datos en una estructura como esta:

(info <- data.frame(start=c(1, 144, 288), len=c(6, 6, 6))) # start len # 1 1 6 # 2 144 6 # 3 288 6

entonces podrías hacer esto en una línea con:

sequence(info$len) + rep(info$start-1, info$len) # [1] 1 2 3 4 5 6 144 145 146 147 148 149 288 289 290 291 292 293

Tenga en cuenta que esta solución funciona incluso si las secuencias que está combinando tienen diferentes longitudes.


Esto también se puede hacer usando seq o seq.int

x = c(1, 144, 288) c(sapply(x, function(y) seq.int(y, length.out = 6))) #[1] 1 2 3 4 5 6 144 145 146 147 148 149 288 289 290 291 292 293

Como @Frank se menciona en los comentarios aquí es otra forma de lograr esto utilizando la estructura de datos de @ josilber (Esto es útil particularmente cuando hay una necesidad de una longitud de secuencia diferente para diferentes intervalos)

c(with(info, mapply(seq.int, start, length.out=len))) #[1] 1 2 3 4 5 6 144 145 146 147 148 149 288 289 290 291 292 293


Estoy usando R 3.3.2. OSX 10.9.4

Lo intenté:

a<-c() # stores expected sequence f<-288 # starting number of final sub-sequence it<-144 # interval for (d in seq(0,f,by=it)) { if (d==0) { d=1 } a<-c(a, seq(d,d+5)) print(d) } print(a)

Y la secuencia esperada se almacena en a.

[1] 1 2 3 4 5 6 144 145 146 147 148 149 288 289 290 291 292 293

Y otro intento:

a<-c() # stores expected sequence it<-144 # interval lo<-4 # number of sub-sequences for (d in seq(0,by=it, length.out = lo)) { if (d==0) { d=1 } a<-c(a, seq(d,d+5)) print(d) } print(a)

El resultado:

[1] 1 2 3 4 5 6 144 145 146 147 148 149 288 289 290 291 292 293 432 433 434 435 436 437