2017-06-08 18 views
0

我有一個列表,我試圖通過添加在一起的n個文檔,以便它們形成一個單獨的VCorpus。通常情況下,您可以使用c()運算符並加入兩個VCorpus來創建一個更大的運算符。但是,如果我按照下面的方法首先初始化列表,則會將語料庫轉換爲字符列表。但如果我不初始化它,我會收到一個錯誤。如何在保留R類型的同時迭代地添加到一個語料庫列表?

clean_corpus <- c() 
    for (i in directory_source$filelist) { 
    conn <- file(i,"r") 
    filebuffer <- readLines(conn, encoding="UTF-8", skipNul=TRUE) 
    close(conn) 

    set.seed(3413) 
    sampled_buffer <- sample(filebuffer, size = round(length(filebuffer) * fraction, digits = 0)) 
    sample_corpus <- VCorpus(VectorSource(sampled_buffer)) 
    clean_corpus <- c(clean_corpus, sample_corpus, recursive = TRUE) 
    } 
+0

輸入了這一點之後。我想if語句可能可以解決這個問題。但我想知道是否有更優雅的解決方案。 – Kevin

回答

0

這不是測試,但它可能工作:

f <- function(i){conn <- file(i,"r") 
       filebuffer <- readLines(conn, encoding="UTF-8", skipNul=TRUE) 
       close(conn) 
       set.seed(3413) 
       sampled_buffer <- sample(filebuffer, size = round(length(filebuffer) * fraction, digits = 0)) 
       sample_corpus <- VCorpus(VectorSource(sampled_buffer)) 
       clean_corpus <- c(clean_corpus, sample_corpus, recursive = TRUE)} 

corpus_list <- lapply(directory_source$filelist,f) 
corpus_agg <- do.call(c,corpus_list) 
相關問題