R 在Lappy下使用自定义函数时出错
需要帮助!我有一个数据帧的列表,每个数据帧的长度和格式都相同:R 在Lappy下使用自定义函数时出错,r,list,group-by,dplyr,lapply,R,List,Group By,Dplyr,Lapply,需要帮助!我有一个数据帧的列表,每个数据帧的长度和格式都相同: > 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
> 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)
}
随后出现警告信息:
var2*var3中出错:二进制运算符的非数值参数
然后我检查了
月报
和市值
的类别,它们都是数字。我是R的noob,我不确定计算的方法,也欢迎任何替代方案 你需要!!var2
和!!var3
与您使用的相同!!var1
对于调试,在尝试在整个列表中映射或应用函数之前,应检查是否可以在单个数据帧上成功调用函数。但是您也没有在lappy
中调用您的函数-您正在调用一个名为组的函数。为什么?@camille非常感谢你!我修正了var2和var3,它成功了!错误的原因是我完全不知道列表中的计算,所以我搜索了其他类似的问题,并根据它们的解决方案构建了函数。感谢您指出,名为group
的函数是一个复制错误代码的键入错误,我会更正它。
lapply(train_R_new_env, function(x) group(x,Date,Monthly_return,Marketcap))