在 R 中,如何从不同大小的向量列表生成类似文档术语文档矩阵的数据帧?

In R, how to generate document term-doucment matrix-like data frame from a list of vectors of different size?

给定一个不同大小的向量列表,如下所示:

> input <- list(tom=c("a","b","c"),mary=c("a","c"), jack=c("a","d"))
> input
$tom
[1] "a" "b" "c"

$mary
[1] "a" "c"

$jack
[1] "a" "d"

我正在尝试生成一个数据框,其中向量中的每个项目都作为指示变量,如下所示:

   name a b c d
1  tom 1 1 1 0
2 mary 1 0 1 0
3 jack 1 0 0 1

换句话说,这有点像从列表生成文档术语矩阵 我试着查看 R 的 tm 包,但它似乎不支持将列表转换为这种形式。

试试这个:

> elements <- unique(do.call(c, input))
> output <- as.data.frame(t(sapply(input, function(x) ifelse(elements %in% x, 1, 0))))
> colnames(output) <- elements
> output$name <- rownames(output)
> rownames(output) <- NULL
> output
  a b c d name
1 1 1 1 0  tom
2 1 0 1 0 mary
3 1 0 0 1 jack