我为公司X和Y有两个数据框,分别包含日期和每日收益,类似于:
alphas = c(0.0028, -0.0010)
betas = c(1.7099, 0.9242)
我将两者都放在一个名为“ firm.data”的列表中,并且我想分别为每个公司添加一个名为“ AR”的新列(我正在使用列表,因为我将来会添加更多的公司数据框,不想单独进行所有计算)。新列“ AR”应包括使用匿名函数“ ar_calc”计算的数据,该函数包含CAPM模型的计算[公司收益-(alpha +(beta *市场收益))]。我已经计算了X和Y各自的alpha和beta,并将它们存储在称为“ alpha”和“ beta”的两个列表中。
mkt.data
Date Return
2019-01-25 0.013621555
2019-01-28 -0.006335916
2019-01-29 0.000760060
我也有数据帧mkt.data:
ar_calc <- function (x, y, z) {
mutate(AR = (x$Return - (y + (z * mkt.data$Return))))
}
firm.data.ar <- lapply(firm.data, ar_calc, y = alphas, z = betas)
firm.data.ar
要将新列添加到每个数据帧,我一直在尝试将apply函数与匿名函数结合使用(请参见下面的代码)。
但是,这总是返回以下错误:
is.data.frame(.data)||中的错误is.list(.data)|| is.environment(.data):参数“ .data”在没有默认值的情况下丢失
由于我是R的新手,所以我希望这种解释是有意义的。我将不胜感激!
我已经尝试了不同的函数(lapply和mapply),但是不知道如何在函数中使用三个变量(X和Y的确认数据,X和Y的alpha数据以及X和Y的beta)计算新列称为“ ar_calc”。
我的代码当前如下所示:
{{1}}
结果应该是一个包含两个数据帧X和Y的列表,这两个数据帧都应有一个新列“ AR”。此列的值应使用“ ar_calc”函数计算。