Я создал функцию, которая будет очищать текст, затем выполнять униграмму, биграмму и триграмму, но я получаю эту ошибку:
Ошибка в (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