在lapply下使用自定义函数时出错

时间:2018-07-01 00:17:16

标签: r list group-by dplyr lapply

需要帮助!我有list个数据帧,每个dataframe的长度和格式都相同:

> print(train_I_new_env[["Resample01.train"]])
          variable       Date Marketcap Monthly_return asset4_new_EnvScore
4     US90214J1016 2016-04-29   1421622   2.153255e-01             11.1063
5     US90214J1016 2016-05-31   1421622  -6.801530e-03             11.1063
7     US90214J1016 2016-07-29   1421622   1.734417e-01             11.1063
8     US90214J1016 2016-08-31   1421622   1.023900e-02             11.1063
9     US90214J1016 2016-09-30   1421622   8.017330e-02             11.1063

我想对每个数据帧应用计算过程。所以我首先用dplyr组成了一个函数:

group <- function(df, var1, var2, var3){
  var1 <-  enquo(var1); var2 <-  enquo(var2); var3 <-  enquo(var3);
  df %>% 
    group_by(!!var1) %>% 
    summarise(return = sum(var2*var3, na.rm = TRUE)/ sum (var3, na.rm = 
TRUE)*100)
}

然后在lapply下应用此功能:

lapply(train_R_new_env, function(x) group(x,Date,Monthly_return,Marketcap))

然后出现警告消息:

  

var2 * var3中的错误:二进制运算符的非数字参数

然后我检查了Monthly_returnMarketcap的类,它们都是数字。我是R语言的菜鸟,而且我不确定计算方式,也欢迎使用其他替代解决方案。

0 个答案:

没有答案