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

Я написал функцию, которая будет делать униграмму и биграммы в определенном столбце и возвращать их в одном и том же фрейме данных (как в rbind), но иногда я получаю сообщение об ошибке и думаю, что, поскольку я назначил topfeatures для 30, поэтому, еслиСтолбец не может сгенерировать 30 строк для униграммы, он вернет меньше 30, например 15, а биграммы вернут 30, поэтому я получу ошибку, потому что функция не может выполнить rbind и вернуть наборы данных, если они имеют разную длину.

мой код:

M <- function(L) {
  unigram <- L %>% 
       tokens() %>% 
       tokens_ngrams(n = 1, concatenator = " ") %>% 
       dfm() %>% 
       topfeatures(30)
  df1 <- data.frame(word_unigram = names(unigram), count_unigram = unigram)
  rownames(df1) <- NULL 
  bigram <- L %>% 
       tokens() %>%     
       tokens_ngrams(n = 2, concatenator = " ") %>% 
       dfm() %>% 
       topfeatures(30)
  df2 <- data.frame(word_bigram = names(bigram), count_bigram = bigram)
  rownames(df2) <- NULL

  return(list(df1, df2))
}

datafinal <- data.frame(lapply(data$name, function (L) M(L)))

ошибка:

Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, : arguments imply differing number of rows: 30, 19, 10

, поэтому мой вопрос, есть ли способ заставить функцию возвращать результат дажеесли они не одинаковы по длине, то на этом NA?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...