R语言 用任意长度的序列创建一个向量

vdzxcuhz  于 2023-10-13  发布在  其他
关注(0)|答案(1)|浏览(105)

我想创建一个长度为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大小,我不喜欢它.有没有一种方法或现成的函数可以取代我的代码,使它更好?

1.向量my_seq中的序列具有任意长度
1.向量my_seq的长度为n
1.我想设置向量中序列的长度范围,例如,在我的代码rep(sample(3:20,1))中,任何序列的长度从320意味着什么
1.我想指出序列的元素,它可以是-1,0,1或其他具有不同集合和元素数量的元素,例如0,1或1,5,10,20。但这些值始终为int

xxslljrj

xxslljrj1#

你打算做什么?

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]

相关问题