1

即使我从 blog.fosstrading.com/2011/08/tactical-asset-allocation-using.html 复制粘贴示例,我也会收到此错误:

 error in PosLimit[, "MaxPos"] : incorrect number of dimensions

这是一个错误还是我错过了什么?

sessionInfo() 的输出:

R version 3.2.2 (2015-08-14)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

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

other attached packages:
 [1] dplyr_0.4.3                   quantstrat_0.9.1687           foreach_1.4.2                
 [4] blotter_0.9.1695              PerformanceAnalytics_1.4.3662 FinancialInstrument_1.2.0    
 [7] quantmod_0.4-5                TTR_0.23-0                    xts_0.9-7                    
[10] zoo_1.7-12                   

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.1      lattice_0.20-33  codetools_0.2-14 assertthat_0.1   grid_3.2.2      
 [6] R6_2.1.1         DBI_0.3.1        magrittr_1.5     iterators_1.0.7  tools_3.2.2     
[11] parallel_3.2.2  
4

1 回答 1

3

你已经加载了 dplyr。它定义了一个lag屏蔽通用函数的函数,stats::lag. dplyr::lag不执行任何方法分派,因此在某个地方有一个滞后方法在它应该被调用的时候没有被调用。

dplyr 还屏蔽了xts 中定义的firstlast泛型,这也可能导致问题。

一个短期的解决方法是先调用library(dplyr),因此xts 中的firstandlast将在 dplyr 中掩盖他们的对手。长期的解决方案是所有包都应该显式地导入它们使用的所有函数,以避免由包加载/附加的顺序引起的问题(请注意,用户的非打包代码仍然会受到包加载/附加顺序的影响)。

于 2015-10-31T23:10:43.807 回答