gpt4 book ai didi

r - 如何使用条件限制 expand.grid 的可能变化?

转载 作者:行者123 更新时间:2023-12-01 19:54:45 27 4
gpt4 key购买 nike

<分区>

我正在尝试为 n 找到所有可能的投资组合分配权重步长为 s 的股票数量.函数expand.grid()用于计算所有变化,子集使用 rowSums() 完成,将输出减少到权重为 100 的所有变体。

问题:

这种方式不适用于“较大”的数字。使用 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

非常感谢任何帮助!

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com