抱歉标题含糊。此外,一个例子值一千字。
我有一个清单:
> lst<-list(A=c("one","two", "three"), B=c("two", "four", "five"), C=c("six", "seven"), D=c("one", "five", "eight"))
> lst
$A
[1] "one" "two" "three"
$B
[1] "two" "four" "five"
$C
[1] "six" "seven"
$D
[1] "one" "five" "eight"
我想重新排列成以下矩阵:
> m
A B C D
one 1 0 0 1
two 1 1 0 0
three 1 0 0 0
four 0 1 0 0
five 0 1 0 1
six 0 0 1 0
seven 0 0 1 0
eight 0 0 0 1
其中,基本上,每个坐标表示每个列表元素中每个列表值的存在 (1) 或不存在 (0)。
我尝试弄乱 as.data.frame()、unlist()、table() 和 melt() 的各种组合,但没有成功,因此非常感谢任何正确方向的指针。
我想我最后的手段是一个嵌套循环,它遍历列表元素,然后将 0 或 1 分配给矩阵中的相应坐标,但这似乎过于复杂。
for (...) {
for (...) {
if (...) {
var <- 1
} else {
var <- 0
}
}
}
谢谢!