使用data.frame中每行的值作为R中的参数

时间:2016-04-15 20:04:13

标签: r dataframe apply

我有1个data.frame如下,每一行是不同的股票数据:

Teste=data.frame(matrix(runif(25), nrow=5, ncol=5))
colnames(Teste) <- c("AVG_VOLUME","AVG_RETURN","VOL","PRICE","AVG_XX")

    AVG_VOLUME AVG_RETURN   VOL       PRICE      AVG_XX
 1  0.7028197  0.9264265    0.2169411 0.80897110 0.3047671
 2  0.7154557  0.3314615    0.4839466 0.63529520 0.5633933
 3  0.4038030  0.4347487    0.3441471 0.07028743 0.7704912  
 4  0.5392530  0.6414982    0.4482528 0.11087518 0.3512511
 5  0.8720084  0.9615865    0.8081017 0.45781973 0.0137508

我想要做的是使用cols AVG_RETURN,VOL,PRICE作为data.frame中所有行的参数,从包sde(https://cran.r-project.org/web/packages/sde/sde.pdf)应用函数GBM。 像这样:

Result <- apply(Teste,1,function(x) {
    GBM(x[,"PRICE"],x[,"AVG_RETURN"],x[,"VOL"],1,252)
})

所以我希望结果是一个data.frame,为 Teste data.frame中的每个Stock运行GBM。

我怎样才能得到这个结果?

1 个答案:

答案 0 :(得分:0)

关于为什么会出现错误的狭隘问题的答案是,当apply函数传递值时,它只是作为向量而不是数据帧,因此在{{1}的参数中删除hte逗号会得到你的结果。

"["

如果您需要它是一个数据框,其中每个股票都是一列,并且输入数据结构具有有意义的股票名称,那么我建议使用:

Result <- apply(Teste,1,function(x) {
    GBM(x[,"PRICE"],x[,"AVG_RETURN"],x[,"VOL"],1,252)
})

我认为这在风险分析环境中有意义的唯一方法是,如果在一些更高级别的背景下组装这些单个实例的模拟运行的次数要多得多。