1

この 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% として表示したいと思います

4

2 に答える 2

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"

それらは、この新しいクラスのベクトルにあるだけです。

于 2014-11-19T10:04:19.033 に答える
2

文字列を正しくフォーマットする 1 つの方法は次のとおりです。

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

これを機能させるにtable.AnnualizedReturnsは、コードを編集する必要があります。コピーを作成し、必要に応じてコードを編集できます。または、この関数を含むパッケージの作成者に連絡して、変更を提案することもできます。

于 2014-11-19T09:41:48.977 に答える