我的代码如下所示:
get_postcoefs <- function(portfo){
my_dat <- prerank_betas %>%
filter(portfo == portfo) %>%
lm(ret ~ ewr, my_dat) %>%
coef %>%
as.list %>%
as_data_frame
}
当我想在下一步中使用此代码应用此功能时
postrank <- prerank_betas %>%
group_by(portfo) %>%
do(get_postcoefs(.$portfo))
我使用的数据框如下所示:
dput(head(prerank_betas, 10))
structure(list(permco = c(3, 4, 5, 6, 7, 8, 9, 11, 12, 13), pre_beta = c(0.754759259550561,
0.631020855428056, 0.963497668377108, 1.42359914669436, 1.88321141160762,
0.137054776055511, 1.04141132820461, 0.170163365604386, 1.07633721793778,
1.05016503010496), ret = c(0.021630734879652, 0.00867405735757635,
0.0157192335910029, 0.0163030885650139, 0.017402600558639, 0.0182427638210356,
0.015755719798324, 0.0348026989282579, 0.0120230854319578, 0.016944221076395
), me = c(12.3938081896552, 603.599033139535, 36.6372490671642,
20.481490497076, 2918.12852836134, 1.89075555555556, 1.21730113636364,
5.5216014957265, 116.021340472028, 8.22907327586207), ewr = c(0.454914743929347,
0.65175605642766, 1.04015768854358, 1.54966348955938, 1.46542203513179,
0.874404877119168, 0.934768449855933, 0.296266764535612, 0.949971716508229,
1.31022003302531), beta_rank = c(3L, 3L, 5L, 8L, 10L, 1L, 6L,
1L, 6L, 6L), portfo = c(4L, 10L, 6L, 5L, 10L, 1L, 1L, 2L, 8L,
3L)), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"
))
小标题:10 x 7
permco pre_beta ret me ewr beta_rank portfo
<dbl> <dbl> <dbl> <dbl> <dbl> <int> <int>
1 3 0.755 0.0216 12.4 0.455 3 4
2 4 0.631 0.00867 604. 0.652 3 10
3 5 0.963 0.0157 36.6 1.04 5 6
4 6 1.42 0.0163 20.5 1.55 8 5
5 7 1.88 0.0174 2918. 1.47 10 10
6 8 0.137 0.0182 1.89 0.874 1 1
7 9 1.04 0.0158 1.22 0.935 6 1
8 11 0.170 0.0348 5.52 0.296 1 2
9 12 1.08 0.0120 116. 0.950 6 8
10 13 1.05 0.0169 8.23 1.31 6 3
我收到以下错误消息:
Error in as.data.frame.default(data) :
cannot coerce class ‘"formula"’ to a data.frame
我必须如何调整我的代码才能正常工作。