Я пытаюсь сделать несколько лагов, используя наименьшее количество кода в dplyr, придерживаясь аккуратного eval.Работает следующий код стандартной оценки (SE):
#if(!require(dplyr)) install.packages("dplyr");
library(dplyr)
a=as_tibble(c(1:100))
lags=3
lag_prefix=paste0("L", 1:lags, ".y")
multi_lag=setNames(paste("lag(.,", 1:lags, ")"), lag_prefix)
a %>% mutate_at(vars(value), funs_(multi_lag)) #final line
# A tibble: 100 x 4
value L1.y L2.y L3.y
<int> <int> <int> <int>
1 1 NA NA NA
2 2 1 NA NA
3 3 2 1 NA
4 4 3 2 1
5 5 4 3 2
6 6 5 4 3
7 7 6 5 4
8 8 7 6 5
9 9 8 7 6
10 10 9 8 7
# ... with 90 more rows
Однако вы заметите, что в последней строке не используется tidy eval, а прибегает к SE.Информация о пакете, относящаяся к команде funs_, говорит, что она излишняя из-за аккуратного eval.Таким образом, мне интересно, если это можно сделать с помощью приборки Eval?Любая помощь приветствуется, я новичок в оценке типов.