Рассмотрим этот простой пример
> tibble(var1 = c(1,2,3,4,5),
+ boo1 = c(1,2,3,4,5))
# A tibble: 5 x 2
var1 boo1
<dbl> <dbl>
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
Здесь я хочу получить текущее значение, выраженное в процентах, используя ecdf
. Ожидается, что это будет работать, но это не так.
> tibble(var1 = c(1,2,3,4,5),
+ boo1 = c(1,2,3,4,5)) %>%
+ mutate_at(vars(contains('boo')),
+ .funs = funs(ecdf(.)(.)))
Error in mutate_impl(.data, dots) :
Evaluation error: 'x' and 'y' lengths differ.
Вместо этого это работает
> tibble(var1 = c(1,2,3,4,5),
+ boo1 = c(1,2,3,4,5)) %>% mutate(percentile = ecdf(boo1)(boo1))
# A tibble: 5 x 3
var1 boo1 percentile
<dbl> <dbl> <dbl>
1 1 1 0.2
2 2 2 0.4
3 3 3 0.6
4 4 4 0.8
5 5 5 1
В чем здесь проблема? Спасибо!