83

このtmパッケージはc、一連のPlainTextDocuments が与えられた場合、自動的に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の を にするには、次のようにしCorpusます。

sectioned.Corpus <- c(sectioned[[1]][[1]], sectioned[[1]][[2]], ..., sectioned[[154]][[6]])

誰でも簡単な方法を提案できますか?

ETA: foo<-unlist(foolist, recursive=FALSE)PlainTextDocuments のフラット リストを生成しますが、リスト要素を要素ごとにフィードするという問題が残っています。c

4

3 に答える 3

94

unlist(foolist)私はそれがあなたを助けることを期待しています. デフォルトのオプションrecursiveがありTRUEます。

したがってunlist(foolist, recursive = FALSE)、ドキュメントのリストが返され、次の方法でそれらを組み合わせることができます。

do.call(c, unlist(foolist, recursive=FALSE))

do.callc取得したリストの要素に関数を適用するだけです

于 2013-04-30T12:58:40.700 に答える
8

リストのリストで機能した別の方法を次に示します。

df <- as.data.frame(do.call(rbind, lapply(foolist, as.data.frame)))

または、うまく機能する tidyr の新しい関数を見てください。

ネストされたリストをきちんとした tibble に四角形にする

長方形

    lst <-  list(
      list(
        age = 23,
        gender = "Male",
        city = "Sydney"
      ),
      list(
        age = 21,
        gender = "Female",
        city = "Cairns"
      )
    )
      
    tib <- tibble(lst)  %>% 
      unnest_wider(lst)

df <- as.data.frame(tib)
于 2020-09-24T05:22:28.967 に答える