Вы можете использовать индексирование, чтобы получить желаемое повторение, сохраняя при этом эффективность, состоящую только из отдельных текстов.
library("tibble")
library("quanteda", warn.conflicts = FALSE)
## Package version: 1.4.1
## Parallel computing: 2 of 12 threads used.
## See https://quanteda.io for tutorials and examples.
tib <- tibble(
text = c(
"a grande latte with soy milk",
"black coffee no room"
),
repetition = c(100, 2)
)
dfmat <- corpus(tib) %>%
dfm()
Определите функцию для повторения вашей переменной «повторение»:
repindex <- function(x) rep(seq_along(x), times = x)
Затем просто повторите индексацию двух документов dfm:
dfmat2 <- dfmat[repindex(tib$repetition), ]
dfmat2
## Document-feature matrix of: 102 documents, 10 features (40.4% sparse).
head(dfmat2, 2)
## Document-feature matrix of: 2 documents, 10 features (40.0% sparse).
## 2 x 10 sparse Matrix of class "dfm"
## features
## docs a grande latte with soy milk black coffee no room
## text1 1 1 1 1 1 1 0 0 0 0
## text1 1 1 1 1 1 1 0 0 0 0
tail(dfmat2, 4)
## Document-feature matrix of: 4 documents, 10 features (50.0% sparse).
## 4 x 10 sparse Matrix of class "dfm"
## features
## docs a grande latte with soy milk black coffee no room
## text1 1 1 1 1 1 1 0 0 0 0
## text1 1 1 1 1 1 1 0 0 0 0
## text2 0 0 0 0 0 0 1 1 1 1
## text2 0 0 0 0 0 0 1 1 1 1