Это из-за ошибки , которую мы исправили до v1.2.0. При построении корпуса из data.frame, для идентификатора документа требуется какое-то поле, и по умолчанию это readtext doc_id
.
Если вы хотите использовать его как переменную документа, вы можете сделать это следующим образом. Сначала я прочитал некоторые тексты из системных файлов пакета readtext для воспроизводимого примера.
library("readtext")
library("quanteda")
packageVersion("readtext")
## [1] ‘0.50’
packageVersion("quanteda")
## [1] ‘1.2.0’
df <- readtext(paste0(DATA_DIR, "txt/EU_manifestos/*.txt"), encoding = "LATIN1")
df
## readtext object consisting of 17 documents and 0 docvars.
## # data.frame [17 × 2]
## doc_id text
## <chr> <chr>
## 1 EU_euro_2004_de_PSE.txt "\"PES · PSE \"..."
## 2 EU_euro_2004_de_V.txt "\"Gemeinsame\"..."
## 3 EU_euro_2004_en_PSE.txt "\"PES · PSE \"..."
## 4 EU_euro_2004_en_V.txt "\"Manifesto\n\"..."
## 5 EU_euro_2004_es_PSE.txt "\"PES · PSE \"..."
## 6 EU_euro_2004_es_V.txt "\"Manifesto\n\"..."
Когда мы создаем корпус из этого, мы не видим никаких переменных документа.
crp <- corpus(df)
crp
## data frame with 0 columns and 17 rows
Но добавить их тривиально:
docvars(crp, "doc_id") <- df$doc_id
head(docvars(crp))
## doc_id
## EU_euro_2004_de_PSE.txt EU_euro_2004_de_PSE.txt
## EU_euro_2004_de_V.txt EU_euro_2004_de_V.txt
## EU_euro_2004_en_PSE.txt EU_euro_2004_en_PSE.txt
## EU_euro_2004_en_V.txt EU_euro_2004_en_V.txt
## EU_euro_2004_es_PSE.txt EU_euro_2004_es_PSE.txt
## EU_euro_2004_es_V.txt EU_euro_2004_es_V.txt
Обратите внимание, что вам настоятельно не рекомендуется обращаться к внутренним объектам корпуса через его элемент data.frame df$documents
. Использование аксессора docvars()
и замена docvars()<-
будут работать в будущем, но внутренние органы корпуса могут измениться.