У меня есть фрейм данных, который выглядит примерно так:
ID text year DATE
G45 txt1 2010 01/01/2010
G45 txt2 2011 01/01/2011
G45 txt3 2012 01/01/2012
B78 txt4 2010 01/01/2010
B78 txt5 2011 01/01/2011
C12 txt6 2013 01/01/2013
Я могу собрать годы из df
, поэтому у меня будут уникальные значения:
year_to_process <- c("2010", "2011", "2012", "2013")
Я определяю свою функцию следующим образом:
1) Я фильтрую по годам, поскольку меня интересует только вычисление косинуса от года t до t-1.
2) Я помещаю текст вVCorpus и очистить его
3) Я вычисляю матрицу косинуса
4) Я сохраняю матрицу косинуса в файл
text_to_cosine <- function(x){
data <- x %>% filter(year == year_to_process | year == year_to_process - 1)
# some additional text cleaning
cosine_matrix <- cosine(data)
saveRDS(cosine_matrix, file = cosine_matrix.rds)
}
Код работает, когда я делаю что-то вроде: year_to_process <- "2012"
однако при попытке map
или walk
данных я получаю сообщение об ошибке:
walk (text_to_cosine, year_to_process) Ошибка в .x [[i]]: объект типа 'замыкание' не является поднабором
map (text_to_cosine, year_to_process) Ошибка: .x
не является вектором (замыкание)
Как я могу сделатьэто так, чтобы я мог кормить в каждый из этих лет?
т.е. 1) Взять данные и процесс за 2010 год
2) Взять данные и процесс за 2011 и 2010 годы
3) Возьмите данные и процесс за 2012 и 2011 годы
4) Возьмите данные и процесс за 2013 и 2012 годы
РЕДАКТИРОВАТЬ:
Вот функция
text_to_cosine <- function(x){
data <- x %>% filter(filing_date_year == year_to_process | filing_date_year == year_to_process - 1)
…
}
Теперь я думаю, что ошибка исходит от filter
части.Может ли быть так, что первый год (скажем, 2005) не имеет t-1
, и это вызывает ошибку?
EDIT2:
При применении следующего я получаю следующую ошибку:
text_to_cosine <- function(x, year_to_process){
data <- x %>% filter(filing_date_year == year_to_process | filing_date_year == year_to_process - 1)
…
}
text_to_cosine (df, year_to_process) Ошибка в gzfile (файл, режим): недопустимый аргумент 'description' Дополнительно: Предупреждение: In if (file == "") stop ("'file' должно быть непустой строкой"): Показать перезапуск трассировки с ошибкой отладки в gzfile (файл, режим): неверный аргумент "description"