tm
パッケージはc
を拡張するため、PlainTextDocument
sのセットが指定された場合、Corpus
が自動的に作成されます。残念ながら、各PlainTextDocument
は個別に指定する必要があるようです。
例えばもしわたしが持っていたら:
_foolist <- list(a, b, c); # where a,b,c are PlainTextDocument objects
_
私はこれをしてCorpus
を取得します:
_foocorpus <- c(foolist[[1]], foolist[[2]], foolist[[3]]);
_
次のような_'PlainTextDocument
_ sのリストのリストがあります。
_> str(sectioned)
List of 154
$ :List of 6
..$ :Classes 'PlainTextDocument', 'TextDocument', 'character' atomic [1:1] Developing assessment models Developing models
.. .. ..- attr(*, "Author")= chr "John Smith"
.. .. ..- attr(*, "DateTimeStamp")= POSIXlt[1:1], format: "2013-04-30 12:03:49"
.. .. ..- attr(*, "Description")= chr(0)
.. .. ..- attr(*, "Heading")= chr "Research Focus"
.. .. ..- attr(*, "ID")= chr(0)
.. .. ..- attr(*, "Language")= chr(0)
.. .. ..- attr(*, "LocalMetaData")=List of 4
.. .. .. ..$ foo : chr "bar"
.. .. .. ..$ classification: chr "Technician"
.. .. .. ..$ team : chr ""
.. .. .. ..$ supervisor : chr "Bill Jones"
.. .. ..- attr(*, "Origin")= chr "Smith-John_e.txt"
#etc., all sublists have 6 elements
_
したがって、すべてのPlainTextDocument
sをCorpus
に入れるには、次のようにします。
_sectioned.Corpus <- c(sectioned[[1]][[1]], sectioned[[1]][[2]], ..., sectioned[[154]][[6]])
_
誰でも簡単な方法を提案できますか?
ETA:foo<-unlist(foolist, recursive=FALSE)
は、PlainTextDocumentsのフラットリストを生成しますが、リストごとの要素をc
に渡すという問題が残ります。
unlist(foolist)
が役立つと期待しています。オプションrecursive
があり、デフォルトではTRUE
です。
したがって、unlist(foolist, recursive = FALSE)
はドキュメントのリストを返し、次の方法でそれらを結合できます。
do.call(c, unlist(foolist, recursive=FALSE))
do.call
は、取得したリストの要素に関数c
を適用するだけです
リストが複数回ネストされ、ネストの量がリストの要素間で異なる場合のより一般的なソリューションは次のとおりです。
flattenlist <- function(x){
morelists <- sapply(x, function(xprime) class(xprime)[1]=="list")
out <- c(x[!morelists], unlist(x[morelists], recursive=FALSE))
if(sum(morelists)){
Recall(out)
}else{
return(out)
}
}