我想知道是否可以将这个 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%
我想知道是否可以将这个 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%
该函数的返回值是一个数据框,所以问题是如何使用百分号打印数据框的一列。
可重现的示例如下。
> 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"
他们只是在这个新类的向量中。
正确格式化字符串的一种方法是:
sprintf('%0.2f%%', 0.0567) # Note I use %% to get a percent sign in the output
[1] "0.06%"
让它发挥作用table.AnnualizedReturns
将意味着编辑代码。您可以制作一个副本,并根据您的意愿编辑代码。或者,您可以联系包含此功能的软件包的作者并提出更改建议。