PerformanceAnalytics数量占百分比%

时间:2014-11-19 09:32:52

标签: r performanceanalytics

我想知道是否可以使此R包中的表输出为%而不是数字。

table.AnnualizedReturns(indOver, Rf=0)

                          SP500  
Annualized Return         0.0732
Annualized Std Dev        0.1951
Annualized Sharpe (Rf=0%) 0.3752

所以第一个0.0732我希望看到0.07%

2 个答案:

答案 0 :(得分:3)

该函数的返回值是一个数据框,因此问题是如何使用百分号打印数据框的列。

以下是可重复的例子。

> require(PerformanceAnalytics)
> data(managers)
> tb =      table.AnnualizedReturns(managers[,1],Rf=0)
> tb
                            HAM1
Annualized Return         0.1375
Annualized Std Dev        0.0888
Annualized Sharpe (Rf=0%) 1.5491

现在我们定义一个新的类和一个以百分号显示的格式函数:

> format.pc = function(x,...){sprintf('%0.2f%%',x)}
> class(tb[,1])="pc"

现在,好像通过魔术:

> tb
                           HAM1
Annualized Return         0.14%
Annualized Std Dev        0.09%
Annualized Sharpe (Rf=0%) 1.55%

基础价值未发生变化:

> tb[,1]
[1] 0.1375 0.0888 1.5491
attr(,"class")
[1] "pc"

它们只是这个新类的载体。

答案 1 :(得分:2)

正确格式化字符串的一种方法是:

sprintf('%0.2f%%', 0.0567)    # Note I use %% to get a percent sign in the output
[1] "0.06%"

table.AnnualizedReturns中使用此功能将意味着编辑代码。您可以制作副本,并根据您的意愿编辑代码。或者,您可以联系包含此功能的包的编写者并提出更改。