如何在 R 中循环的最后一个元素之后追加到列表?
how to append to a list after its last element in loop in R?
我有矢量名称:block_sizes=c(3,3,4)
,我想制作一个列表,其中有 block_sizes[1]
个 1,block_sizes[2]
个 2,和 block_sizes[3]
个3s等
在这个例子中,我应该给代码 [3,3,4]
并得到 [1,1,1,2,2,2,3,3,3,3]
。
我写了下面的代码,但我不知道为什么它给了我[0,3,3,3,3]
。我认为这是因为我应该附加到 vector 的最后一个元素,而我现在没有。欢迎任何意见。
vector=0
for (i in length(block_sizes )) {
buf=rep.int(i,times =block_sizes[i])
membership_vector=append(vector,buf)
}```
我们可以在没有任何循环的情况下使用 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)
我们可以使用mapply
:
unlist(mapply(rep, c(1,2,3), c(3,3,4))
# [1] 1 1 1 2 2 2 3 3 3 3
我有矢量名称:block_sizes=c(3,3,4)
,我想制作一个列表,其中有 block_sizes[1]
个 1,block_sizes[2]
个 2,和 block_sizes[3]
个3s等
在这个例子中,我应该给代码 [3,3,4]
并得到 [1,1,1,2,2,2,3,3,3,3]
。
我写了下面的代码,但我不知道为什么它给了我[0,3,3,3,3]
。我认为这是因为我应该附加到 vector 的最后一个元素,而我现在没有。欢迎任何意见。
vector=0
for (i in length(block_sizes )) {
buf=rep.int(i,times =block_sizes[i])
membership_vector=append(vector,buf)
}```
我们可以在没有任何循环的情况下使用 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)
我们可以使用mapply
:
unlist(mapply(rep, c(1,2,3), c(3,3,4))
# [1] 1 1 1 2 2 2 3 3 3 3