我在文件中有以下脚本(称之为“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
之间存在差异,以致一个有效,另一个失败?如果它有帮助,这里是通过在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
更新:当我多次运行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
答案 0 :(得分: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)