У меня есть вопрос, касающийся функции карты мурлыканья.
Я хотел бы применить математическую функцию к двум вложенным столбцам списка в таблице.Я хотел бы преобразовать столбец в числовой вектор для выполнения моих расчетов.
Но я продолжаю получать сообщение об ошибке: Ошибка в mutate_impl (.data, dots): Ошибка оценки: нечисловой аргумент математической функции.
Я попытался применить пользовательскую функцию, используя purrr:: map2 но выдает ошибку.Хорошо бы сделать трюк?Пожалуйста, смотрите ниже.
mape <- function(actual,pred){
mape <- mean(abs(ifelse(actual==0,
ifelse(pred==0,0,abs(1 - pred)*100),((actual - pred)/actual*100))))
return (mape)
}
mape_score <- mape_lab %>% mutate(mape_score=map2(data[],pred_lab[],mape))
> mape_lab
# A tibble: 30 x 3
Location pred_lab data
<fct> <list> <list>
1 Balsthal <dbl [12]> <tibble [12 x 1]>
2 Balsthal <dbl [12]> <tibble [12 x 1]>
3 Balsthal <dbl [12]> <tibble [12 x 1]>
4 Bettlach <dbl [12]> <tibble [12 x 1]>
5 Bettlach <dbl [12]> <tibble [12 x 1]>
6 Bettlach <dbl [12]> <tibble [12 x 1]>
7 Oberdorf Bio <dbl [12]> <tibble [12 x 1]>
8 Oberdorf Bio <dbl [12]> <tibble [12 x 1]>
9 Oberdorf Bio <dbl [12]> <tibble [12 x 1]>
10 Grenchen <dbl [12]> <tibble [12 x 1]>
Ожидаемый результат:
> mape_lab
# A tibble: 30 x 3
Location pred_lab data mape_score
<fct> <list> <list> <num>
1 Balsthal <dbl [12]> <tibble [12 x 1]> 1244
2 Balsthal <dbl [12]> <tibble [12 x 1]> 32545
3 Balsthal <dbl [12]> <tibble [12 x 1]> 54554
4 Bettlach <dbl [12]> <tibble [12 x 1]> .....
5 Bettlach <dbl [12]> <tibble [12 x 1]>
6 Bettlach <dbl [12]> <tibble [12 x 1]>
7 Oberdorf Bio <dbl [12]> <tibble [12 x 1]>
8 Oberdorf Bio <dbl [12]> <tibble [12 x 1]>
9 Oberdorf Bio <dbl [12]> <tibble [12 x 1]>
10 Grenchen <dbl [12]> <tibble [12 x 1]>