2015-09-07 92 views
1

我在使用phangorn软件包试图运行R脚本时收到奇怪的错误。每当我使用运行该脚本: Rscript mini_example.R 它失败,出现错误消息:R phangorn Rscript R CMD BATCH不同结果

Error in as.vector(data) : 
no method for coercing this S4 class to a vector 
Calls: pml ... as.matrix -> as.matrix.default -> array -> as.vector 

这可能表明一些命名空间的烦恼。但是,运行R CMD BATCH mini_example.R OUT.txt时,一切运行平稳,没有错误。

代码mini_example.R

library(phangorn) 
sessionInfo() 
data(Laurasiatherian) 
dm <- dist.ml(Laurasiatherian) 
tree <- NJ(dm) 
fitJC <- pml(tree, Laurasiatherian) 
fitJC <- optim.pml(fitJC) 
print('==>>Success <<==') 

我比较sessionInfo()RscriptR CMD BATCH两者(见下文),唯一不同的是,使用Rscript方法时未安装,而是通过命名空间加载。我有点困惑这个问题,所以这将是巨大的,如果有人用更多的知识可能有一个想法是什么,可能会导致Rscript麻烦......

当R CMD批

R version 3.2.1 (2015-06-18) 
Platform: x86_64-apple-darwin13.4.0 (64-bit) 
Running under: OS X 10.9.5 (Mavericks) 

locale: 
[1] C 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] phangorn_1.99.14 ape_3.3   

loaded via a namespace (and not attached): 
[1] Matrix_1.2-2 nnls_1.4  parallel_3.2.1 igraph_0.7.1 
[5] nlme_3.1-120 grid_3.2.1  lattice_0.20-31 quadprog_1.5-5 

对于RSCRIPT

R version 3.2.1 (2015-06-18) 
Platform: x86_64-apple-darwin13.4.0 (64-bit) 
Running under: OS X 10.9.5 (Mavericks) 

locale: 
[1] C 

attached base packages: 
[1] stats  graphics grDevices utils  datasets base  

other attached packages: 
[1] phangorn_1.99.14 ape_3.3   

loaded via a namespace (and not attached): 
[1] Matrix_1.2-2 nnls_1.4  parallel_3.2.1 igraph_0.7.1 
[5] nlme_3.1-120 grid_3.2.1  methods_3.2.1 lattice_0.20-31 
[9] quadprog_1.5-5 

回答

1

,如果你除了phangorn导入library(methods)这适用于Rscript。这将methods的sessionInfo()从“通过命名空间(并未附加)加载”更改为“附加的基础包”,这是您的sessionInfo()之间唯一的区别RscriptR CMD BATCH

我不知道为什么两者会有所不同。但是,this answer注意littler(替代Rscript)“加载方法包”,这表明littler的作者也遇到了您的问题。

+0

您的解决方案有效。引用'?Rscript':Rscript省略了方法,因为它占用了大约60%的启动时间......所以这就是原因,并没有意识到这一点。 –