2014-02-20 37 views
1

這是來自「分析棒球數據與R」的第9章,試圖模擬半局運行得分;R:運行馬爾可夫鏈仿真時概率錯誤的數量不正確

simulate<-function(P,R,start=1){ 
s<-start; path<-NULL; runs<-0 
while(s<25){ 
s.new<-sample(1:25, 1, prob=P[s, ]) 
path<-c(path, s.new) 
runs<-runs + R[s, s.new] 
s<-s.new 
} 
runs 
} 

這與本書中的代碼非常相似。當我嘗試使用以下代碼運行它時,出現以下錯誤;

RUNS<-replicate(10000,simulate(tmatrix,R))

錯誤sample.int(長度(X),大小,替換,概率): 概率的數量不正確

點擊 「與調試重新運行」 在Rstudio指出下面的行;

s.new<-sample(1:25, 1, prob=P[s, ]) 

這是唯一有意義的東西,因爲它有一個概率數量的問題。任何想法如何改變這一點?

回答

0

在代碼中,s需要1和25之間的任何值 - sample(1:25, ....

因此,爲了對P[s,]工作,它需要(至少)25行。您將此矩陣傳遞給simulate函數。因此,檢查它的尺寸

dim(tmatrix) 
+0

嗯,確定這是有道理的,而我傳遞矩陣的尺寸爲24×26,我在同時和s.new語句改爲25函數值26。然而,這隻會產生一個不同的錯誤: 「R [s,s.new]中的錯誤:下標越界」 – user3334415

+0

@ user3334415:發佈一個可重現的示例,以便猜測可以停止並開始編碼。 –