n
株式数の可能なすべてのポートフォリオ配分を、s
の重み付けステップで見つけることを試みています。機能expand.grid()
は、すべてのバリエーションを計算するために使用され、サブセットはrowSums()
を使用して行われ、重み付けが問題100条件を使用してexpand.gridのバリエーションを制限する方法は?
あるすべての変動に出力を低下させる:
この方法は機能しません「大きい」数字。 expand.grid()
の後にサブセットを使用するのが最善の方法ではないようです。何か案は?
n <- 5 #number equities
s <- 20 #weighting steps
Ptf <- function(n, s){
m <- expand.grid(rep(list(seq(0, 100, s)), n))
subset(m, rowSums(m)==100)
}
Ptfs <- Ptf(n, s)
結果:ここで
がコードである
head(Ptfs)
Var1 Var2 Var3 Var4 Var5
6 100 0 0 0 0
11 80 20 0 0 0
16 60 40 0 0 0
21 40 60 0 0 0
26 20 80 0 0 0
31 0 100 0 0 0
> tail(Ptfs)
Var1 Var2 Var3 Var4 Var5
4321 0 0 0 40 60
5186 20 0 0 0 80
5191 0 20 0 0 80
5221 0 0 20 0 80
5401 0 0 0 20 80
6481 0 0 0 0 100
株式n <- 10
の数を増やすと、エラーメッセージを提供します。
> n <- 10 #number equities
> s <- 20 #weighting steps
>
...
>
> Ptfs <- Ptf(n, s)
Error: cannot allocate vector of size 461.3 Mb
すべてのヘルプは本当にいただければ幸いです!上記のリンクを1として
おかげミッキー、パーティションパッケージは私が探していたヒントでした。 –