2016-09-22 2 views
-2

숫자가 8 인 요소를 벡터에서 임의로 선택하고 싶습니다. 숫자가 0이면 다른 숫자를 찾습니다. 숫자가 0보다 큰 경우이 숫자를 -1로 지정하십시오. 벡터의 합이 20이 될 때까지 반복합니다. R에서 어떻게 할 수 있습니까? vec<-c(2,3,6,0,8,5,6,5)R - 무작위로 숫자를 선택하고 조건이 만족 될 때까지 계속 반복하십시오.

이 목록에서 번호를 무작위로 선택하고 숫자 -1 요소의 합이 20

+0

https://www.datacamp.com/community/tutorials/tutorial-on-loops-in-r#gs.KtblU9M을 -이 읽기. –

+0

이 프로세스가 20의 합으로 왜 수렴됩니까? 하나는 분명히 20보다 작거나 같은 것으로 끝날 수 있지만, 그러한 조작 후에 * 정확히 * 20의 합을 얻는 것은 순수한 행운이라고 생각합니다. 예를 들어 – RHertel

+0

벡터 20의 합계를 달성하는 조건입니다. –

답변

0

될 때까지 나는 그게 당신이 원하는 것 정말 정말 모르겠어요,하지만에 대한합니다 예를 들어 내가 당신의 질문에 대해 이해하는 것은, 나의 해결책이다. 내 스크립트에서 대부분의 개념과 주요 기능을 사용할 수 있습니다. 그걸 이해하고 최적화하려면 that과 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 
} 
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 
+0

set.seed 함수를 무작위로 19 번 수행합니까?! –

+0

난수 생성기의 시드를 설정 중입니다. '? set.seed'를 보라. – nicola

관련 문제