Мне нужно применить функцию прокрутки к большому набору данных, но она должна применяться к сгруппированным окнам, указанным в group_by
. Передача функции в mutate
возвращает ошибку «индекс за пределами» для некоторых подмножеств данных, но работает для других. Я не могу предоставить свои данные, поскольку они являются конфиденциальными, но я нашел достаточно похожий воспроизводимый пример.
Я попытался отследить ошибку, из-за которой я понял, что это связано с функцией, возвращающей матричный тип данных (1d). Приведение его к датафрейму или вектору не сработало.
library(tidyverse)
library(caTools)
# Works
i <- iris %>%
group_by(Species)%>%
arrange(Sepal.Length,.by_group=T)%>%
mutate(q_low = runquantile(lag(Sepal.Length),3,probs=0.2,endrule = 'NA',align='right'))
# Gives error
# Grouping by and arranging by more than one variable
m <- mtcars %>%
group_by(cyl,gear)%>%
arrange(gear,.by_group=T)%>%
mutate(q_low = runquantile(lag(drat),3,probs=0.2,endrule = 'NA',align='right'))
#> Error in `[<-`(`*tmp*`, (k2 + 1):n, , value = y[1:(n - k2), ]): subscript out of bounds
Создано в 2019-11-05 пакетом Представить (v0.3.0)
Ожидаемый результат, аналогичный IrisПример с функцией, применяемой к группировке и NA в правильном месте. На самом деле я получаю ошибку.