2014-05-01 56 views
0

我已經在一個文件下面的腳本(稱之爲「temp.R」):差運行RSCRIPT VS猿與庫源

library(ape) 
tree <- rbdtree(0.5, 0.05, 5) 
bd.time(tree, 0, 0) 

當我運行Rscript temp.R我得到的一些結果:

$par 
    birth  death 
0.5289875 0.0000000 

$SS 
[1] 9.21573 

$convergence 
[1] 0 

$iterations 
[1] 6 

$evaluations 
function gradient 
     8  16 

$message 
[1] "relative convergence (4)" 

然而,當我運行R和然後執行:

source('temp.R') 

我得到以下錯誤:

Error in integrate(Pi, 0, Tmax) : non-finite function value 

有沒有人有任何想法爲什麼Rscriptsource之間的差異,使一個工作,另一個失敗?如果有幫助,這裏是由R中運行version輸出:

   _       
platform  x86_64-apple-darwin10.8.0 
arch   x86_64      
os    darwin10.8.0     
system   x86_64, darwin10.8.0   
status          
major   3       
minor   0.1       
year   2013       
month   05       
day   16       
svn rev  62743      
language  R       
version.string R version 3.0.1 (2013-05-16) 
nickname  Good Sport 

UPDATE:當我運行Rscript temp.R幾次我有時會收到類似的錯誤信息運行source時爲:

Error in integrate(Pi, 0, Tmax) : non-finite function value 
Calls: bd.time ... objective -> CDF.birth.death -> .CDF.birth.death2 -> integrate 
Execution halted 

回答

1

這與Rscript和source()之間的區別沒有關係,它只是您使用的函數依賴於隨機過程,並取決於它起作用或不起作用。我沒有仔細研究你想要達到的目標,但你可能需要更改你用於bd.time函數的值。

## works 
set.seed(123) 
library(ape) 
tree <- rbdtree(0.5, 0.05, 5) 
bd.time(tree, 0, 0) 

## doesn't work 
set.seed(12345) 
library(ape) 
tree <- rbdtree(0.5, 0.05, 5) 
bd.time(tree, 0, 0) 
+0

使用種子123,它與Rscript一起使用,但它不使用source()。 – redcurry