2017-06-08 1 views
0

J'ai une liste de n documents que j'essaie de parcourir pour les ajouter ensemble afin qu'ils forment un seul VCorpus. Normalement, vous pouvez utiliser l'opérateur c() et joindre deux VCorpus pour en créer un plus grand. Mais si j'initialise la liste d'abord comme je le fais ci-dessous, elle place les corpus dans une liste de caractères. Mais si je ne l'initialise pas en premier, j'obtiens une erreur.Comment ajouter itérativement à une liste de corpus tout en conservant son type dans 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

Après avoir tapé cela. Je suppose qu'une instruction if pourrait probablement résoudre ce problème. Mais je me demande s'il y a une solution plus élégante. – Kevin

Répondre

0

Il est non testé, mais il peut fonctionner:

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)