我想创建一个长度为
n
的向量,它将包含任意长度的序列
我编写了一个代码来执行此操作,但对我来说它似乎不可靠并且有点荒谬。
n <- 300
vals <- c(-1,0,1)
seq_range <- 3:20
make_seq <- function() sample(vals,size=1) |> rep(sample(seq_range,1))
my_seq <- lapply(1:50,\(x) make_seq()) |> unlist() |> tail(n = n)
...
my_seq
[1] 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[35] 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[69] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 -1 -1 -1 -1 -1 -1 -1
[103] -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[137] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
[171] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 -1
[205] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
[239] 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[273] 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
我创建了一个列表,然后将其切成适当的大小
n
,我不喜欢它......
有没有一种方法或现成的函数可以替换我的代码并使其变得更好?
====================================================== =============
向量内的序列
my_seq
具有任意长度
向量
my_seq
的长度为 n
我想设置向量中序列的长度范围,例如在我的代码中
rep(sample(3:20,1))
任何序列的长度从3
到20
是什么意思
我想指示序列的元素,它可以是-1,0,1,也可以是具有不同集合和元素数量的其他值,例如0,1或1,5,10,20。 但这些永远是
int
值
你打算做什么?
n <- 300
vals <- c(-1, 0, 1)
seq_range <- 3:20
seqs <- sample(seq_range, n %/% min(seq_range), replace = TRUE)
M <- min(which(cumsum(seqs) >= n))
v <- sample(vals, M, replace = TRUE)
rep(v, seqs[1:M])[1:n]