在 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
给定一个不同大小的向量列表,如下所示:
> 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