从R中具有不同长度的函数返回数据帧

时间:2019-04-18 19:57:14

标签: r function n-gram rbind

我编写了一个函数,该函数将在特定列上执行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填满?

0 个答案:

没有答案