отображение функции по годам и использование фрейма данных - PullRequest
0 голосов
/ 07 июня 2019

У меня есть фрейм данных, который выглядит примерно так:

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"

1 Ответ

1 голос
/ 07 июня 2019

Вы, кажется, смешали x и ввод функции:

text_to_cosine <- function(year_to_process){
    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)
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...