使用固定参考列替换具有lm的apply函数的循环

时间:2016-09-28 00:59:50

标签: r for-loop apply

我在同事的帮助下停止使用for循环,但我对应用函数也不是很好。

我需要做的是针对固定参考值对多家公司进行回归,我可以使用for循环轻松实现这一目标,但使用apply系列则不是很多。

我的数据和for循环看起来像:

      Date    AANRI    AGLRI  APARI   ASTRI  ASXRI  DUERI   ENVRI   GASRI HDFRI  SKIRI
1: 2006-01-06 504.86 26443.30 255.75 101.15 28050.84 108.77 247.71 169.61 99.03 100.00
2: 2006-01-13 498.86 26618.78 252.21 100.00 28324.59 110.70 251.43 171.67 99.18 103.36
3: 2006-01-20 492.41 27734.33 255.67 100.38 28436.87 110.41 247.41 169.61 98.92 101.68
4: 2006-01-27 498.86 28850.82 264.88  99.23 28815.26 111.90 246.70 173.74 98.26  99.16
5: 2006-02-03 497.48 28164.16 265.79 100.38 28614.28 111.16 244.88 170.98 99.64  97.48
6: 2006-02-10 500.71 28104.86 262.23 101.54 28567.93 112.21 248.63 173.05 99.38  98.32

我的for循环:

reg1_store <- list()
for(i in names(RI_c)[!grepl("ASX|Date", names(RI_c))]){
  reg1_store[[i]] <- lm(get(i) ~ ASXRI, data = RI_c)
}

这很好用,我可以在ASX上对单独的公司进行回归并相应地存储它们。

我想知道如何使用apply函数复制它?

1 个答案:

答案 0 :(得分:0)

@ zhequan-li提供了一个非常有效的解决方案。如果效率不是考虑因素,并且您希望结果为list,则应使用lapply。主要思想是给lapply一个代码矢量(左手边的公司),将每个股票代码粘贴到形式为&#34; X~ASXRI&#34;的字符串中,然后调用{ {1}}关于该公式。

lm