Разница между запуском Rscript и исходным кодом с библиотекой ape

У меня есть следующий скрипт в файле (назовем его "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

person redcurry    schedule 01.05.2014    source источник


Ответы (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)
person sinQueso    schedule 02.05.2014
comment
С семенем 123 он работает с Rscript, но не использует source(). - person redcurry; 03.05.2014