Dplyr внутри специализированной функции не оценивает столбец.
Я потратил часы, чтобы выяснить проблему в коде. У меня есть dataframe (пример ниже), который имеет несколько столбцов и создал функцию ниже для передачи dataframe и столбца. Цель состоит в том, чтобы сделать фильтрацию и мутировать, чтобы сделать линейную интерполяцию. Однако функция не читает столбец аргумента.
library(tidyverse)
library(imputeTS)
library(zoo)
dfm <- tbl_df(data.frame(country=rep('BGD', each=48), year=c(1970:2017),
STUNT=c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,
70.9, NA, NA, NA, 63.4, 73.6, 71.5, 69.2, 67.3,
65.8, 63.8, 59.7, 59.3, 59.9, 50.8, 53.2, 51.4, 47.8,
50.5, 45.9, 45.1, 43.2,NA, NA, NA, 41.4, 42,
38.7, 36.1, NA, NA, NA, NA)))
vari = "STUNT"
data_impute<- function(data, vari) {
data %>%
select(country, year, paste0(vari)) %>%
group_by(country) %>%
filter(seq_along(vari) >= min(which(!is.na(vari))) &
seq_along(vari) <= max(which(!is.na(vari)))) %>%
mutate(vari= na.interpolation(vari, option="linear")) %>%
select(country, year, paste0(vari)) %>%
ungroup()
}
при выполнении функции с данными вместо нее выдается столбец STUNT со строкой «STUNT». Я вижу, что операция dplyr внутри не оценивает столбец от group_by до конца. Я прочитал много других подобных постов, но ни один не помог. Буду признателен, если вы сможете дать совет, в чем проблема.