我正在尝试为许多不同的股票预测39年的未来自由现金流。理想情况下,我想运行的功能是计算给定年份股票的未来现金流量,并将该值应用于R数据框中的新列。因此,我们将在数据框中添加39列,每年增加一列。
我已经正确设置了数据框架,并创建了一个函数来计算给定年份中证券的未来自由现金流。我苦苦挣扎的是,我不太清楚如何将结果附加到原始数据框中。我正在使用mapply及其函数将自由现金流量预测重复39次。
head(screen)
date Ticker FCF.t
1 2019-04-25 AAPL US Equity 70438.81
2 2019-04-25 MSFT US Equity 36153.81
3 2019-04-25 AMZN US Equity 29052.70
4 2019-04-25 GOOGL US Equity 34095.22
5 2019-04-25 FB US Equity 32829.72
6 2019-04-25 BRK/A US Equity 23999.81
下面是我创建的函数,该函数可以计算未来的自由现金流并对其折现。 i是年份,g是增长率,成本是折现率
compound<-function(i,g,cost){
fcf<-screen$FCF.t*((1+g)^i)
fcf<-fcf/((1+cost)^i)
screen$fcf<-fcf
print(screen)
}
然后我使用mapply进行迭代
mapply(compound,2:40,.03,.08)
我认为这会修改原始数据帧,但它会在控制台中提供输出,例如下面39次不同的时间。
fcf
1 1.219299e+04
2 6.258243e+03
3 5.029038e+03
4 5.901900e+03
我希望能得到以下类似的东西
date Ticker FCF.t fcf2 fcf3
1 2019-04-25 AAPL US Equity 70438.81 projection projection
2 2019-04-25 MSFT US Equity 36153.81 projection projection
3 2019-04-25 AMZN US Equity 29052.70 projection projection
4 2019-04-25 GOOGL US Equity 34095.22 projection projection
5 2019-04-25 FB US Equity 32829.72 projection projection
6 2019-04-25 BRK/A US Equity 23999.81 projection projection
我最终使用以下解决方案:
t<-39
k<-nrow(screen)
fcf<-matrix(NA,k,t)
for(i in 2:40){
fcf[,i]<-screen$FCF.t*((1+screen$Sls.3Yr.Avg.Gr)^i)/((1+wacc)^i)
}
fcf<-fcf[,-1]
fcf<-as.data.frame(fcf)
transition<-cbind(screen,fcf)