まず、この問題は特定の問題を解決しようとするものではありません。 Rの新人として、より効率的なコードとコード作成手順を作成する作業も行っています。この問題の背景には、さまざまなプログラミング方法やスタイルについての視点があります。以下はコードビルドプロセスと組み込み関数
は何かをコーディングするための3つの方法があります。ここで
まずデータ例である:
stackexample <- c(52,50,45,49.5,50.5,12,10,14,11.5,12,110,108,106,101,104)
dim(stackexample)<- c(5,3)
方法1:任意のオブジェクト
ertimesIVCV1 <- function (x)
{ (solve(var(log((x[-nrow(x),])/(x[-1,])))))%*%
((1+(log(x[1,]/(x)[nrow(x),])))^(1/nrow(x))-1)}
ertimesIVCV1(stackexample)
を定義せずに機能して計算を行います方法2:関数内のオブジェクトを定義し、それらのオブジェクトを操作する
ertimesIVCV2 <- function (x)
{ IVCV <- solve(var(log((x[-nrow(x),])/(x[-1,]))));
retsexcess <- (1+(log(x[1,]/(x)[nrow(x),])))^(1/nrow(x))-1;
IVCV%*%retsexcess}
ertimesIVCV2(stackexample)
方法3:複数の関数を定義し、したがって、すべてが同じ答え生産機能
IVCV <- function (x) {solve(var(log((x[-nrow(x),])/(x[-1,]))))}
retsexcess <- function(x) (1+(log(x[1,]/(x)[nrow(x),])))^(1/nrow(x))-1
ertimesIVCV3 <- function (x) {IVCV(x)%*%retsexcess(x)}
ertimesIVCV3(stackexample)
「などの要約」でこれらの関数を呼び出す:
[,1]
[1,] 1.4430104
[2,] -0.1365155
[3,] 11.8088378
いますが、3つの異なるアプローチを見ることができるようにします。
最適な数の組み込み関数が存在するのですか、または常にすべての数学を明示的にリストする必要がありますか?関数内のいくつのレベルの関数が最適ですか?どちらの方法も計算速度が優れていますか?これに親指のルールがありますか?どのようにこれにアプローチしますか?すべてのコメントや提案やリンクは歓迎され、ありがとう!
目標は、時間効率であればライ
http://stackoverflow.com/q/4406873/210673、特に@ GavinSimpsonの回答を参照してください。 – Aaron