2013-04-20 3 views
0

함수의 출력을 변수에 저장하는 데 문제가 있습니다. 나는 내가 해결하려고하는 문제에 대해 약간의 맥락을 제시하는 것이 최선이라고 생각한다. 플레이어가 "A"와 "R"은 테니스 게임을한다고 가정 의 runningScoreFn는 pointHistory 벡터를 요약하고 좋은 data.frame함수의 출력을 변수에 저장 R

runningScoreFn = function(pointHistory){ 
playerUni = c("a", "r") 
cols = sapply(playerUni, function(thisPlayer){ 
cumsum(pointHistory == thisPlayer) 
}) 
names(cols) = playerUni 
cbind(pointHistory, as.data.frame(cols)) 
} 

"는의 게임을 활약 oneEpxiermentGameFn에 모든 것을 함께 박았 "vs"r ". 4 포인트를 획득 한 첫 번째 플레이어가 게임에서 이기지만 최소한 2 포인트 앞서야합니다. "r"은 60 %의 확률로 1 점을 얻습니다.

pRogerPoint = 0.6 

oneExperimentGameFn = function(pRogerPoint){ 
game = c(rep("r",pRogerPoint * 100), rep("a", 100-pRogerPoint*100)) 
i = 4 
keepGoing = TRUE 
while(keepGoing){ 
whosePoint = sample(game, size=i, replace=TRUE) 
if(sum(whosePoint=="r")-sum(whosePoint=="a")>=2){ 
success = TRUE 
print(cbind(runningScoreFn(whosePoint),success=success)) 
keepGoing = FALSE 
}else if(sum(whosePoint=="a")-sum(whosePoint=="r")>=2){ 
success = FALSE 
print(cbind(runningScoreFn(whosePoint),success=success)) 
keepGoing = FALSE 
} 
i=i+1 
} 
} 

pRogerGameFn은 Roger가 게임에서 승리 할 확률을 나타냅니다.

pRogerGameFn = function(pRogerPoint, NExperiments){ 
RogerGameFn = lapply(1:NExperiments,function(dummy){ 

ok=oneExperimentGameFn(pRogerPoint) 
})} 

여기 출력을 변수 ok에 저장하려고하지만 ok는 NULL을 반환합니다. 내 생각 엔 이것이 내 한 번의 실험 게임과 관련이 있다고 생각해. 나는 또한 ok = RogerGameFn을 시도했지만 ok도 NULL을 반환합니다.

답변

1

기능 oneExperimentGameFn에서 아무 것도 반환되지 않습니다. 반환 할 특정 값이있는 경우 함수 끝에 (또는 적절한 경우) return(.) 명령을 삽입하십시오. 당신은 단순히 인쇄 문을 잡으려고합니다

, 당신은 capture.output(.) 사용할 수 있습니다

ok <- capture.output(oneExperimentGameFn(pRogerPoint))