我编写了一个函数,该函数将在特定列上执行unigram和bigrams,然后将它们返回到同一数据帧(如rbind), 但是我有时会出错,我认为因为我将topfeatures分配给30,所以如果该列不能为unigram生成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填满?