首页 > 解决方案 > 如何在R中循环中的最后一个元素之后附加到列表?

问题描述

我有向量名称:block_sizes=c(3,3,4)并且我想制作一个列表,其中包含block_sizes[1]1 的block_sizes[2]数量、2 的数量和block_sizes[3]3 的数量等。

在这个例子中,我应该给[3,3,4]我的代码并得到[1,1,1,2,2,2,3,3,3,3].

我写了下面的代码,但我不知道为什么它给了我[0,3,3,3,3]。我认为这是因为我应该附加到我现在不是的向量的最后一个元素。任何输入表示赞赏。

vector=0
for (i in length(block_sizes )) {
  buf=rep.int(i,times =block_sizes[i])
  membership_vector=append(vector,buf)

  }```

标签: rlistvectorappendadd

解决方案


我们可以rep在没有任何循环的情况下使用,因为times参数是矢量化的

rep(seq_along(block_sizes), block_sizes)
#[1] 1 1 1 2 2 2 3 3 3 3

或者为了更快的实施

rep.int(seq_along(block_sizes), times = block_sizes)
#[1] 1 1 1 2 2 2 3 3 3 3

或者如果我们需要一个循环

v1 <- c()
for(i in seq_along(block_sizes)) {
   v1 <- c(v1, rep.int(i, times = block_sizes[i]))
 }

数据

block_sizes <- c(3, 3, 4)

推荐阅读