R-随机选择一个数字并反复进行直到条件被删除

时间:2016-09-22 14:17:30

标签: r

我想从一个向量中随机选取一个数字,其中包含8个元素,总和为35.如果数字为0,则查找另一个数字。如果数字大于0,请将此数字设为-1。在循环中执行此操作,直到向量的总和为20.如何在R中执行此操作? 例如:vec<-c(2,3,6,0,8,5,6,5)

从该列表中随机选取一个数字,并使数字为-1,直到元素之和为20.

2 个答案:

答案 0 :(得分:0)

我真的不确定这是你想要的,但是根据我对你的问题的理解,这是我的解决方案。您将在我的脚本中获得大部分概念和关键功能。使用它和help()来理解它们并进行优化。

vec <- c(2, 3, 6, 0, 8, 5, 6, 5)

summ <- 0
new.vec <- NULL
iter <- 1
while(summ<20) {
 selected <- sample(vec,1)
 if(selected!=0) new.vec[iter] <- selected-1
 summ <- sum(new.vec)
 iter <- iter+1
}

答案 1 :(得分:0)

试试这个:

vec <- c(2, 3, 6, 0, 8, 5, 6, 5)
#just setting the seed for reproducibility
set.seed(19)
tabulate(sample(rep(seq_along(vec),vec),20))
#[1] 0 2 4 0 4 5 3 2