我希望采用以下向量:
v1 = c(2, 5, 7, 9, 1)
我想运行一个迭代采样循环,将采样值放入
一个新的向量v2
,然后在这些值的总和大于12时中断此过程。
这是我到目前为止所做的:
v2 = c()
while (sum(v2) > 12) {
sample(v1, 1, replace = FALSE)
if(sum(v2) > 12))
break
}
不确定我是否在正确的轨道上。感谢帮助。
答案 0 :(得分:2)
我认为你的语法存在问题,使用break会使用repeat循环更有意义:
v1 = c(2, 5, 7, 9, 1); v2 <- c(); repeat {
v2 <- c(v2, sample(v1[!v1 %in% v2], 1) )
if( sum(v2) > 12 )
break
}; print(v2)
[1] 5 7 9