Ошибка в аргументах функции подразумевает различное количество строк - PullRequest
1 голос
/ 18 апреля 2019

Я создал функцию, которая будет очищать текст, затем выполнять униграмму, биграмму и триграмму, но я получаю эту ошибку:

Ошибка в (function (..., row.names = NULL), check.rows = FALSE, check.names = TRUE,: аргументы подразумевают различное количество строк: 30, 19, 10

функция работает с некоторыми столбцами, а другие не работают, и я получилэта ошибка, и я не знаю, почему.

Вот мой код:

why <- function(L) {

  L <- removePunctuation(L)
  L <- gsub("^[[:space:]]*","",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

  trigram <-L %>% 
       tokens() %>% 
       tokens_ngrams(n = 3, concatenator = " ") %>% 
       dfm() %>% 
       topfeatures(30)
  df3 <- data.frame(word_trigram = names(trigram), count_trigram = trigram)
  rownames(df3) <- NULL 

  return(list(df1, df2, df3))
}

datafinal <- data.frame(lapply(data[16:21], function (L) why(L)))

Даже если я передаю один столбец из data[16:21], он не работает. Любая помощь?

Вот некоторые примеры данных:

  N             O       P                  Q            R                 S  
 yes            no     no                  no          happy birthday   
I am happy             hello friends       I am student                   yes
...