首页 > 解决方案 > R:如何解决多个变量的应用函数的错误代码?

问题描述

我有两个 X 和 Y 公司的数据框,每个都包含日期和每日收益,类似于:

firm.data 
X  Date         Return      
2019-01-25      0.007523323
2019-01-28     -0.004778901
2019-01-29      0.004801849

Y  Date         Return      
2019-01-25      0.019767443
2019-01-28     -0.001900380
2019-01-29     -0.006473724 

我将两者都放在一个名为“firm.data”的列表中,对于每个公司,我想分别添加一个名为“AR”的新列(我正在使用列表,因为我将来会添加更多的公司数据框,但我不会想要分别进行所有计算)。新列“AR”应包含使用匿名函数“ar_calc”计算的数据,该函数包含 CAPM 模型的计算 [公司回报 - (alpha + (beta * market return))]。我已经计算了 X 和 Y 各自的 alpha 和 beta,并将它们存储在两个名为“alpha”和“beta”的列表中。

alphas = c(0.0028, -0.0010)
betas = c(1.7099, 0.9242)

我也有数据框 mkt.data:

mkt.data   
Date          Return  
2019-01-25    0.013621555
2019-01-28   -0.006335916
2019-01-29    0.000760060

要将新列添加到每个数据框,我一直在尝试将 apply 函数与匿名函数结合使用(参见下面的代码)。

但是,这总是返回以下错误:

is.data.frame(.data) 中的错误 || 是.list(.data) || is.environment(.data) :参数“.data”没有默认值

由于我对 R 很陌生,我希望这个解释是有道理的。我将不胜感激任何帮助!

我已经尝试过不同的函数(lapply 和 mapply),但不知道如何在名为“ar_calc ”。

我的代码目前如下所示:

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

结果应该是一个包含两个数据框 X 和 Y 的列表,这两个数据框都应该有一个新列“AR”。此列的值应使用“ar_calc”函数计算。

标签: r

解决方案


推荐阅读