нужна помощь! У меня есть 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, и я не уверен в способе вычисления, любое альтернативное решение также приветствуется.