需要帮助!我有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_return
和Marketcap
的类,它们都是数字。我是R语言的菜鸟,而且我不确定计算方式,也欢迎使用其他替代解决方案。