0

ファイルに次のスクリプトがあります(「temp.R」と呼びます):

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

と の間に違いがRscriptありsource、一方が機能し、もう一方が失敗する理由を知っている人はいますか? version参考までに、Rで実行した場合の出力を次に示します。

               _                           
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

更新: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
4

1 に答える 1

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)
于 2014-05-02T16:59:29.027 に答える