2015-09-07 123 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%的啓動時間......所以這就是原因,並沒有意識到這一點。 –